online: 5; azi: 1108; total: 51563 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ă două cuvinte şi un text. Se consideră că separarea cuvintelor în text se face prin cel puțin un spațiu. Să se înlocuiască in text primul cuvânt cu al doilea cuvânt, 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 cuvant1[ 100 ], cuvant2[ 100 ], text[ 1000 ];
int optiune ;
cout << " Introduceti primul cuvant : " ;
cin >> cuvant1;
cout << " Introduceti al doilea cuvant : " ;
cin >> cuvant2;
cout << " Introduceti textul: " ;
cin. ignore ();
cin. getline (text, 1000 );
cout << " Alegeti optiunea de inlocuire : " << endl ;
cout << "1. Numai prima aparitie " << endl ;
cout << "2. Toate aparitiile " << endl ;
cin >> optiune ;
int len1 = strlen (cuvant1);
int len2 = strlen (cuvant2);
int lenText = strlen (text);
// Cautam prima aparitie a primului cuvant si il inlocuim cu cel de-al doilea cuvant
if ( optiune == 1 ) {
char * poz = strstr (text, cuvant1);
if ( poz != NULL ) {
strncpy ( poz , cuvant2, len2);
strncpy ( poz + len2, poz + len1, lenText - len1);
poz [ lenText - len1 + len2] = '\0' ;
}
}
// Cautam toate aparitiile primului cuvant si le inlocuim cu cel de-al doilea cuvant
else if ( optiune == 2 ) {
char * poz = strstr (text, cuvant1);
while ( poz != NULL ) {
strncpy ( poz , cuvant2, len2);
strncpy ( poz + len2, poz + len1, lenText - len1);
poz [ lenText - len1 + len2] = '\0' ;
poz = strstr ( poz + len2, cuvant1);
}
}
cout << "Textul inlocuit este: " << text << endl ;
return 0 ;
}

Explicație:
În cazul de față, am folosit operatorul << pentru a afișa textul, iar endl pentru a insera un newline la sfârșitul afișării.
La finalul programului, returnăm 0 pentru a indica că programul s-a terminat cu succes.