problema #188 pbinfo
Se dau două cuvinte a şi b şi o propozitie s formată numai din litere mici ale alfabetului englez şi spaţii.
Cerinta
Să se modifices, înlocuind fiecare apariţie a cuvântului a cu cuvântul b.
Date de intrare
Fişierul de intrare inlocuirecuvant.in contine pe prima linie cuvintele a şi b, separate printr-un spatiu, iar pe a
doua linie propozitia s.
Date de ieşire
Fişierul de iesire inlocuirecuvant.out va contine pe prima linie propozitia s modificata in conformitate cu cerinta
Restricţii şi precizări
• propozitia s va avea cel mult 100 caractere
• cuvintele asi vor avea cel mult 10 caractere
- cuvintele sunt formate numai din litere mici ale alfabetului englez
Va rog dau coroana
Răspunsuri la întrebare
Răspuns:
#include<fstream>
#include<cstring>
using namespace std;
ifstream cin("inlocuirecuvant.in");
ofstream cout("inlocuirecuvant.out");
int main()
{
char s[101],a[11],b[11],*p,aux[101];
cin>>a>>b;
cin.get();
cin.getline(s,101);
p=strstr(s,a);
while(p)
{
strcpy(aux,p+strlen(a));
strcpy(p,b);
strcat(p,aux);
p=strstr(p,a);
}
cout<<s;
return 0;
}
Explicație:
Răspuns:Raspunsul de 100p
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("inlocuirecuvant.in");
ofstream fout("inlocuirecuvant.out");
char s[100],c1[10],c2[10],t[100];
char *p;
int main()
{
fin>>c1>>c2;
fin.get();
fin.get(s,100);
p=strtok(s," ");
while(p)
{
if(strcmp(p,c1)==0)
{
strcat(t,c2);
}
else
{
strcat(t,p);
}
strcat(t," ");
p=strtok(NULL," ");
}
fout<<t;
return 0;
}
Explicație: