Indicaţie. Se va analiza într-un ciclu fiecare caracter din şir. Programul de rezolvare a problemei este cel de mai jos.
# 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.