Lucrarea nr



Yüklə 0,56 Mb.
səhifə12/20
tarix17.01.2019
ölçüsü0,56 Mb.
#98835
1   ...   8   9   10   11   12   13   14   15   ...   20

5.2Probleme rezolvate


In exemplele de mai jos vom scrie programe C şi C++, deci vom utiliza stilurile corespunzătoare pentru directivele include.

Problema 1. Se dă şirul de caractere “aBxE12+? \t\nY”. Să se calculeze numărul de cifre, litere, spaţii şi caractere alfanumerice. Datele se vor afişa în felul următor
Sirul studiat :

Lungimea şirului :

Litere :

Cifre :


Spatii :

Caractere alfanumerice :


Indicaţie. Se vor utiliza funcţiile standard isalpha(), isdigit(), isalnum(), isspace(), strlen().

Programul ce rezolvă problema este următorul.


# include

# include

# include

using namespace std;

int main()

{

char x[] = "aBxE12+? \t\nY";



int nc = 0;

int nl = 0;

int ns = 0;
for(int i = 0; i

{

if(isdigit(x[i]))



nc = nc + 1;

if(isupper(x[i]) || islower(x[i]))

nl++;

if(isspace(x[i]))



ns++;

}

cout << "Sirul studiat : " << x << endl;



cout << "Lungimea sirului : " << strlen(x) << endl;

cout << "Cifre : " << nc << endl;

cout << "Litere : " << nl << endl;

cout << "Spatii : " << ns << endl;

return 0;

}
Rezultatele rulării programului sunt cele de mai jos. De ce este afişat şirul cu litera Y pe rândul următor?




Notă. Se vor adăuga instrucţiunile necesare pentru numărarea caracterelor alfanumerice (litere şi cifre).
Problema 2. Fie şirul “abca?aXZ”. Să se numere câte caractere ‘a’ sunt în şir.

Indicaţie. Se va analiza într-un ciclu fiecare caracter din şir. Programul de rezolvare a problemei este cel de mai jos.


# include

# include

int main(){

char c[] = "abca?aXZ";

int i, na = 0;

for(i = 0; i < strlen(c); i++)

if(c[i] == 'a')

na = na + 1;

printf("Sirul studiat : %s \n", c);

printf("Numarul de caractere a : %d\n", na);

return 0;

}
Rezultatul rulării programului este cel de mai jos.




Problema 3. Se dă şirul “abcd=ABCD”. Să se definească o funcţie care să convertească literele mici în litere mari.

Indicaţie.Se va utiliza funcţia standard toupper().

Programul de rezolvare a problemei este următorul.
# include

# include

# include
void strcnv(char x[])

{

int i, nx = strlen(x);



for(i = 0; i < nx; i++)

x[i] = toupper(x[i]);

}
//testarea functiei strcnv

int main()

{

char y[] = "a2cd=AxC*";



printf("Sirul initial : %s\n", y);

strcnv(y);

printf("Sirul modificat : %s\n", y);

return 0;

}
Rezultatul rulării programului este cel de mai jos.


Problema 4. Se dau şirurile de caractere x = “+123” şi y = “12.3e-1”. Să se convertească valorile acestor şiruri în numerele corespunzătoare care se vor atribui ca valori unor variabile de tip int şi double, respectiv a şi b. Să se calculeze apoi valoarea expresiilor a + b, , sin(a + 2b), b + cos(a). Se vor utiliza funcţiile standard atof() şi atoi().

Programul este prezentat în continuare.


# include

# include

# include
int main(){

char x[] = "+123";

char y[] = "12.3e-1";

// se convertesc sirurile în numere

int ix = atoi(x);

double fy = atof(y);

double e1 = ix + fy;

double e2 = sin(ix + 2 * fy);

cout << "x = " << x << endl;

cout << "y = " << y << endl;

cout << "x + y = " << e1 << endl;

cout << "sin(x + 2 * y) = " << e2 << endl;

return 0;

}
Rezultatele rulării programului sunt cele de mai jos



Notă. Se vor adăuga instrucţiunile necesare pentru calculul expresiilor ab şi b + cos(a).
Problema 5. Fie şirurile de caractere “-12”, şi “1.25e1”. Să se convertească în numerele întregi i şi x reale corespunzătoare cu funcţiile atoi() şi atof().

Programul de rezolvare a problemei este următorul.

# include

# include

int main(){

char a[] = "-12", b[] = "1.25e1";

int i = atoi(a);

double d = atof(b);

printf("i = %d\n", i);

printf("d = %lf \n", d);

return 0;

}
Rezultatul rulării programului este cel de mai jos



Notă. Se vor adăuga instrucţiunile necesare pentru calcului expresiilor xi şi cos(i * x).



5.3Probleme propuse


Problema 1. Se dă şirul “xyz2j7M=*&^”. Să se înlocuiască primele două caractere din şir cu primele două caractere din şirul “abc”.

Problema 2. Să se compare şirurile

“abcxd” şi “abdf89k”.

“xyz” şi adk”

“mnp” şi “mnp”

Se va utiliza o instrucţiune for în care se va citi de la tastatură câte o pereche de şiruri cu instrucţiunea cin, se vor compara şirurile şi se va afişa rezultatul.

Se va explica de fiecare dată rezultatul.

Indicaţie. Se va utiliza funcţia standard strcmp().
Problema 3. Să se scrie o funcţie cu un parametru n de tip întreg care afişează n linii cu caracterul ‘*’, un caracter pe prima linie, două caractere pe linia a doua, n caractere pe linia n. De exemplu, pentru n = 3 rezultatul funcţiei va fi

*

**



***

Prototipul funcţiei va fi

void print(int n);
Problema 4. Să se construiască o funcţie care să transforme literele mari dintr-un şir de caractere în litere mici. Prototipul funcţiei va fi

void strcnv2(char[] x);


Problema 5. Să se definească o funcţie cu un parametru n de tip întreg care afişază n linii de câte cinci caractere, caracterele abcde pe prima linie, caracterele bcdef pe linia a doua, etc. De exemplu, pentru n = 4 rezultatul funcţiei va fi

abcde


bcdef

cdefg


defgh

Prototipul funcţiei va fi

void prtcar(int n) ;
Problema 6. Să se facă un program care să citească un şir de la tastatură şi să afişeze şirul citit şi apoi şirul în ordine inversă.
Problema 7. Să se citească un şir de caractere de la tastatură şi să se afişeze pe ecran fiecare caracter al şirului împreună cu valoarea sa în codul ASCII.
Problema 8. Să se citescă de la tastatură un şir ce conţine litere şi cifre. Să se afişeze pe ecran doar litere conţinute în şir.
Problema 9. Să se scrie o funcţie care să calculeze lungimea unui şir de caractere. Prototipul funcţiei va fi

int strglen(char x[]) ;


Problema 10. Să se codifice un şir de caractere adăugând valoarea 1 la codul ASCII al fiecărui caracter. Să se decodifice apoi şirul de caractere. Se vor afişa pe ecran şirul iniţial, şirul codificat şi cel decodificat.



Yüklə 0,56 Mb.

Dostları ilə paylaş:
1   ...   8   9   10   11   12   13   14   15   ...   20




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin