online: 12; azi: 1344; total: 51799 Manual clasa a ix a - Implementarea structurilor de date - Fisiere

Manual clasa a IX a

Implementarea structurilor de date

Fisiere

Fişierul text litere.txt conține mai multe cuvinte scrise cu litere mici , câte un cuvânt pe fiecare linie . Scrieți un program care să afişeze litera care apare de cele mai multe ori . Dacă există mai multe astfel de litere , se vor afişa toate
Pentru a rezolva această problemă, putem folosi un array de contoare pentru fiecare literă mică din alfabet și să parcurgem cuvintele din fișier linie cu linie, incrementând contorul pentru fiecare literă din cuvânt. Apoi, putem parcurge array-ul de contoare și să găsim valoarea maximă (adică litera care apare cel mai des) și să afișăm litera/literele corespunzătoare.
# include < iostream >
# include < fstream >
using namespace std ;
int main () {
ifstream fin ( "litere.txt" ) ;
int counts [ 26 ] = { 0 }; // array-ul de contoare pentru fiecare literă
string word ;
// citim cuvintele din fișier linie cu linie
while ( getline (fin, word )) {
// parcurgem fiecare caracter din cuvânt și incrementăm contorul corespunzător
for ( char c : word ) {
if (c >= 'a' && c <= 'z' ) { // ne asigurăm că caracterul este literă mică
counts [c - 'a' ]++;
}
}
}
fin. close ();
int max_count = 0 ;
// găsim valoarea maximă ( adica litera care apare cel mai des)
for ( int i = 0 ; i < 26 ; i++) {
if ( counts [i] > max_count ) {
max_count = counts [i];
}
}
// afișăm toate literele care apar de cele mai multe ori
for ( int i = 0 ; i < 26 ; i++) {
if ( counts [i] == max_count ) {
cout << ( char )(i + 'a' ) << " " ;
}
}
cout << endl ;
return 0 ;
}

În acest exemplu, am citit cuvintele din fișier linie cu linie folosind funcția getline () și am parcurgut fiecare caracter din fiecare cuvânt, incrementând contorul corespunzător. Apoi, am găsit valoarea maximă a contoarelor și am afișat literele corespunzătoare.