ROZWIĄZANIA
PRZYKŁADOWYCH ZADAŃ |
ZADANIE_1
Napisz funkcję, USUN_MALE, która usuwa
wszystkie małe litery
z łańcucha znaków podawanego jako argument wejściowy tej funkcji.
ZADANIE_2
Napisz funkcję POROWNAJ_ILOSCI sprawdzającą
czy w tekście podanym jako argument
znajduje się więcej małych czy dużych liter. W zależności od rezultatów
porównania,
funkcja powinna zwrócić liczbę: dodatnią, ujemną lub zerową.
ZADANIE_3
Napisz funkcję USUN_WIELOKROTNE, usuwającą wszystkie
wielokrotne spacje
z tekstu podawanego jako parametr.
ZADANIE_4
Napisz funkcję UsunPierwszyMinus
usuwającą (poprzez skrócenie
tekstu) pierwsze wystąpienie znaku minus '-'
z łańcucha znaków przekazywanego jako parametr wejściowy tej funkcji.
ZADANIE_5
Napisz funkcję Dodaj5spacji dodającą 5 spacji na
początku tekstu
przekazywanego jako parametr wejściowy tej funkcji.
ZADANIE_6
Napisz funkcję UsunKomentarz usuwającą z tekstu
przekazywanego jako parametr
całą końcową część poczynając od znaków początku komentarza
"//".
ZADANIE_7
Napisz funkcję CzyJestTxt sprawdzającą czy tekst
przekazywany jako parametr tej funkcji
kończy się literami ".txt" (tak jak nazwy plików tekstowych).
Napisz funkcję, USUN_MALE, która usuwa
wszystkie małe litery
z łańcucha znaków podawanego jako argument wejściowy tej funkcji.
char* USUN_MALE_1( char t[ ] )
{
int i=0;
while( t[i]!='\0' )
if( t[i]>='a' && t[i]<='z' )
strcpy( &t[i], &t[i+1] );
else
i++;
return t;
}
// druga (szybciej działająca) wersja tej samej funkcji
char* USUN_MALE_2( char t[ ] )
{
int i=0, j=0;
while( t[i]!='\0' )
if( t[i]>='a' && t[i]<='z' )
i++;
else
t[j++] = t[i++];
t[j] = '\0';
return t;
}
Napisz funkcję POROWNAJ_ILOSCI sprawdzającą
czy w tekście podanym jako argument wejściowy
znajduje się więcej małych czy dużych liter. W zależności od rezultatów
porównania,
funkcja powinna zwrócić liczbę: dodatnią, ujemną lub zerową
( podobnie jak funkcja porównująca łańcuchy strcmp )
int POROWNAJ_ILOSCI( char t[ ] )
{
int licz_malych=0, licz_duzych=0;
for( int i=0; t[i]!='\0' ; i++ ){
if( t[i]>='a' && t[i]<='z' )
licz_malych++;
if( t[i]>='A' && t[i]<='Z' )
licz_duzych++;}
return licz_malych - licz_duzych;
}
#include <iostream>
using namespace std;
int main() // przykładowe wywołanie w/w funkcji
{ // z tekstem wczytywanym z klawiatury
char tekst[100];
cout<<"Podaj tekst do sprawdzenia: ";
cin.getline(tekst,100);
int wynik = POROWNAJ_ILOSCI(tekst);
if( wynik>0 )cout << "wiecej malych liter" << endl;
else if( wynik<0 )
cout << "wiecej duzych liter" << endl;
else
cout << "jest tyle samo malych i duzych liter" << endl;
return 0;
}
Napisz funkcję USUN_WIELOKROTNE, usuwającą wszystkie wielokrotne spacjene spacjebr> z tekstu podawanego jako parametr.
char* USUN_WIELOKROTNE( char t[ ] )
{
if( t[0]=='\0' )
return t;
int i=1;
while( t[i]!='\0' )
if( t[i]==' ' && t[i+1]==' ' )
strcpy( &t[i+1], &t[i+2] );
else
i++;
return t;
}
Napisz funkcję usuwającą (poprzez skrócenie
tekstu)
pierwsze wystąpienie znaku minus '-'
z łańcucha znaków przekazywanego jako parametr wejściowy tej funkcji.
#include <string.h>
void UsunPierwszyMinus(char t[])
{
int pozycja=0;//szukanie znaku '-'
while( t[pozycja]!=0 && t[pozycja]!='-' )
pozycja++;//usuwanie (jezeli znaleziono)
if( t[pozycja]=='-' )
strcpy( &t[pozycja], &t[pozycja+1] );
}
Napisz funkcję dodającą 5 spacji na
początku tekstu
przekazywanego jako parametr wejściowy tej funkcji.
#include <string.h>
void Dodaj5spacji(char t[])
{
//przesuniecie wszystkich liter o 5 pozycji w prawo
memmove( t+5, t, strlen(t)+1 );//wypełnienie wolnych miejsc spacjami
for(int i=0; i<5; i++)
t[i]=32;
}
Napisz funkcję usuwającą z tekstu
przekazywanego jako parametr
całą końcową część poczynając od znaków początku komentarza
"//".
#include <string.h>
void UsunKomentarz(char t[])
{//wyszukanie pozycji znaków komentarza
char* wsk;
wsk=strstr(t,"//");//obciecie tekstu od znalezionej pozycji
if( wsk!=NULL )
*wsk=0;
}
Napisz funkcję sprawdzającą czy tekst
przekazywany jako parametr tej funkcji
kończy się literami ".txt" (tak jak nazwy plików tekstowych)
#include <string.h>
int CzyJestTxt(char nazwa[])
{
int dlugosc=strlen(nazwa);//zakonczenie, jeżeli nazwa ma mniej niż 4 litery
if( dlugosc<4 )
return 0; //return false//sprawdzenie czy ostatnie 4 litery to ".txt"
if( strcmp( nazwa+dlugosc-4, ".txt" ) == 0 )
return 1; //return true
else
return 0;
}