online: 10; azi: 199; total: 50654 Manual clasa a x a - Implementarea structurilor de date - Pointeri si siruri de caractere

Manual clasa a X a

Implementarea structurilor de date

Pointeri si siruri de caractere

Se introduce un text de la tastatură. Să se afişeze în ordine crescătoare numărul de apariţii ale fiecărei litere în text. Se va preciza litera care are frecvenţa cea mai mare şi litera care are frecvenţa cea mai mică. Analiza se va face fără să se ţină cont de diferenţa dintre literele mari şi literele mici.
# include < iostream >
# include < cstring >
using namespace std ;
int main () {
char text[ 1000 ];
int frecventa[ 26 ] = { 0 }; // frecventa pentru fiecare litera
int lungime;
cout << " Introduceti un text: " ;
cin. getline (text, 1000 );
lungime = strlen (text);
// Parcurgem textul si numaram frecventa fiecarei litere
for ( int i = 0 ; i < lungime; i++) {
// Verificam daca caracterul este o litera
if ((text[i] >= 'a' && text[i] <= 'z' ) || (text[i] >= 'A' && text[i] <= 'Z' )) {
// Convertim litera la majuscule pentru a contoriza frecventa corecta
int litera = toupper (text[i]) - 'A' ;
frecventa[litera]++;
}
}
// Afisam frecventa fiecarei litere
cout << "Frecventa literelor: " << endl ;
for ( int i = 0 ; i < 26 ; i++) {
if (frecventa[i] != 0 ) {
cout << ( char )(i + 'A' ) << ": " << frecventa[i] << endl ;
}
}
// Gasim litera cu frecventa maxima si litera cu frecventa minima
int maxFrecventa = 0 , minFrecventa = lungime;
char maxLitera , minLitera ;
for ( int i = 0 ; i < 26 ; i++) {
if (frecventa[i] > maxFrecventa ) {
maxFrecventa = frecventa[i];
maxLitera = ( char )(i + 'A' );
}
if (frecventa[i] < minFrecventa && frecventa[i] != 0 ) {
minFrecventa = frecventa[i];
minLitera = ( char )(i + 'A' );
}
}
// Afisam litera cu frecventa maxima si litera cu frecventa minima
cout << "Litera cu cea mai mare frecventa: " << maxLitera << " apare de " << maxFrecventa << " ori." << endl ;
cout << "Litera cu cea mai mica frecventa: " << minLitera << " apare de " << minFrecventa << " ori." << endl ;
return 0 ;
}

Programul primește un text de la tastatură și afișează în ordine crescătoare numărul de apariții al fiecărei litere din text, fără să țină cont de diferența dintre literele mari și mici. De asemenea, se afișează litera care are frecvența cea mai mare și litera care are frecvența cea mai mică.
Pentru a rezolva problema, se declara un vector de frecvențe inițializat cu toate elementele la zero. Se parcurge textul și se calculează frecvența fiecărei litere din text prin conversia literei la o literă mică folosind funcția tolower () și indexarea vectorului de frecvențe. Apoi, se afișează în ordine crescătoare numărul de apariții al fiecărei litere, litera care are frecvența cea mai mare și litera care are frecvența cea mai mică. Pentru a găsi literele cu cele mai mari și cele mai mici frecvențe, se parcurge vectorul de frecvențe și se memorează poziția elementului cu frecvența cea mai mare și cea mai mică.
La final, se afișează vectorul de frecvențe și literele cu cele mai mari și cele mai mici frecvențe, împreună cu numărul de apariții al acestora.