Buna!
Ma poate ajuta cineva la problema asta? Nu inteleg cum functioneaza functia strstr , adica nu inteleg la ce ma ajuta ca imi returneaza pointer-ul cu prima aparitia a sirului t in sirul s.
Daca rezolvati cu un while, imi explicati ce se intampla in while?
#200 EliminareSubsir1
Cerinţa
Se dau două şiruri de caractere s şi t. Să se elimine din s doar ultima apariţie a lui t.
Date de intrare
Programul citește de la tastatură cel două şiruri, s, respectiv t, separate prin caracterul NewLine.
Date de ieşire
Programul afișează pe ecran şirul s, obţinut după transformarea cerută.
Restricţii şi precizări
cele două şiruri conţin cel mult 255 caractere.
Exemplu
Intrare
ana si mariana canta la nai
na
Ieșire
ana si mariana canta la i
Multumesc!
Răspunsuri la întrebare
Răspuns de
0
#include <iostream>
#include <cstring>
using namespace std;
int main(){
char s[256], t[256];
cin.getline(s, 256);
cin.getline(t, 256);
char *p = strstr(s, t), *precedent = NULL;
while(p != NULL){ // cat timp mai exista aparitii ale lui t in s
precedent = p; // memoram ultima adresa
p = strstr(p+1, t); // si mergem la urmatoarea aparitie
}
//aici precedent va avea adresa ultimei aparitii a lui t in s, sau NULL daca t nu apare in s
strcpy(precedent, precedent+strlen(t)); // scoatem ultima aparitie
cout << s; // afisam sirul modificat
}
Alte întrebări interesante
Biologie,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă