online: 5; azi: 1169; total: 51624 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 citeşte de la tastatură un caracter c şi apoi se introduce un text, în care separarea cuvintelor se face prin cel puțin un spațiu. Să se numere cuvintele care conţin caracterul c. Să se afişeze cuvintele în care apare acest caracter.
# include < iostream >
# include < string >
# include < cstdlib >
using namespace std ;
int main () {
char c;
string text;
int numarCuvinte = 0 ;
cout << " Introduceti un caracter: " ;
cin >> c;
cin. ignore (); // ignoram caracterul newline ramas in buffer
cout << " Introduceti textul: " ;
getline (cin, text);
// numaram cuvintele care contin caracterul c si afisam aceste cuvinte
bool aInceputCuvant = false ;
string cuvantCurent ;
for ( int i = 0 ; i < text. length (); i++) {
if (text[i] != ' ' ) {
// daca am gasit primul caracter al unui cuvant
if (! aInceputCuvant ) {
aInceputCuvant = true ;
cuvantCurent. clear ();
}
cuvantCurent += text[i];
} else {
if ( aInceputCuvant ) {
aInceputCuvant = false ;
// verificam daca cuvantul contine caracterul c
bool aGasitCaracter = false ;
for ( int j = 0 ; j < cuvantCurent. length (); j++) {
if ( cuvantCurent [j] == c) {
aGasitCaracter = true ;
break ;
}
}
if ( aGasitCaracter ) {
numarCuvinte ++;
cout << cuvantCurent << endl ;
}
}
}
}
// daca ultimul cuvant din text contine caracterul c, il afisam
if ( aInceputCuvant ) {
bool aGasitCaracter = false ;
for ( int j = 0 ; j < cuvantCurent. length (); j++) {
if ( cuvantCurent [j] == c) {
aGasitCaracter = true ;
break ;
}
}
if ( aGasitCaracter ) {
numarCuvinte ++;
cout << cuvantCurent << endl ;
}
}
cout << "\ nNumarul de cuvinte care contin caracterul " << c << ": " << numarCuvinte << endl ;
system ( " pause " ); // asteptam apasarea unei taste
return 0 ;
}

Explicatii :