online: 12; azi: 69; total: 52075 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 introduc de la tastatură un cuvânt şi un text. Se consideră că separarea cuvintelor în text se face prin cel puţin un spațiu. Să se şteargă un cuvânt precizat din text, astfel:
a) numai prima apariţie a cuvântului;
b) toate aparițiile cuvântului.
# include < iostream >
# include < cstring >
using namespace std ;
int main () {
char cuvant [ 100 ], text[ 1000 ], textModificat [ 1000 ];
bool aGasitCuvant = false ;
cout << " Introduceti un cuvant : " ;
cin >> cuvant ;
cout << " Introduceti textul: " ;
cin. ignore ();
cin. getline (text, 1000 );
// eliminam numai prima aparitie a cuvantului
char * ptr = strstr (text, cuvant );
if ( ptr != NULL ) {
strcpy ( textModificat , text); // copiem textul original in textModificat
ptr = strstr ( textModificat , cuvant );
ptr [ 0 ] = '\0' ; // inchidem primul cuvant gasit
strcat ( textModificat , ptr + strlen ( cuvant )); // adaugam restul textului
}
cout << "\ nTextul fara prima aparitie a cuvantului : " << textModificat << endl ;
// resetam variabila aGasitCuvant pentru a cauta toate aparitiile cuvantului
aGasitCuvant = false ;
// eliminam toate aparitiile cuvantului
char * pch = strtok (text, " ,." ); // despartim textul in cuvinte
while ( pch != NULL ) {
if ( strcmp ( pch , cuvant ) == 0 ) { // daca am gasit cuvantul
if (! aGasitCuvant ) { // daca nu l-am mai gasit inainte
aGasitCuvant = true ;
} else { // daca l-am mai gasit inainte
ptr = strstr ( textModificat , cuvant );
ptr [ 0 ] = '\0' ; // inchidem cuvantul gasit
strcat ( textModificat , pch + strlen ( cuvant )); // adaugam restul textului
}
} else { // daca nu am gasit cuvantul
strcat ( textModificat , pch ); // adaugam cuvantul la textul modificat
strcat ( textModificat , " " ); // adaugam un spatiu
}
pch = strtok ( NULL , " ,." ); // continuam sa despartim textul in cuvinte
}
cout << "\ nTextul fara toate aparitiile cuvantului : " << textModificat << endl ;
system ( " pause " ); // asteptam apasarea unei taste
return 0 ;
}