URGENT 188 pbinfo VA ROG MULT!!!
Eu am facut-o bine, dar primesc doar 25 de puncte.
In schimb, macar pot vedea indicatiile de rezolvare:
La fiecare pas, vom șterge din propoziție primul cuvânt și îl vom insera pe al doilea, folosind funcțiile oferite de limbajul de programare folosit.
Problema:
Se dau două cuvinte a şi b şi o propoziţie s formată numai din litere mici ale alfabetului englez şi spaţii.
Cerinţa
Să se modifice s, înlocuind fiecare apariţie a cuvântului a cu cuvântul b.
Date de intrare
Fişierul de intrare inlocuirecuvant.in conţine pe prima linie cuvintele a şi b, separate printr-un spaţiu, iar pe a doua linie propoziţia s.
Date de ieşire
Fişierul de ieşire inlocuirecuvant.out va conţine pe prima linie propoziţia s, modificată în conformitate cu cerinţa.
Restricţii şi precizări
propoziţia s va avea cel mult 100 caractere
cuvintele a şi b vor avea cel mult 10 caractere
cuvintele sunt formate numai din litere mici ale alfabetului englez
Exemplu
inlocuirecuvant.in
dar insa
dar nu trebuie dar e mai bine astfel
inlocuirecuvant.out
insa nu trebuie insa e mai bine astfel
Răspunsuri la întrebare
Răspuns de
1
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("inlocuirecuvant.in");
ofstream out("inlocuirecuvant.out");
int main(){
char a[20], b[20], t[500], *temp;
in >> a >> b;
in.getline(t, 500);
in.getline(t, 500);
temp = strstr(t, a);
while (temp) {
if ((temp == t || *(temp - 1) == ' ') && (*(temp + strlen(a)) < 'a' || *(temp + strlen(a)) > 'z')) {
char t[500];
strcpy(t, temp + strlen(a));
strcpy(temp, b);
strcpy(temp + strlen(b), t);
temp = strstr(temp + strlen(b), a);
} else temp = strstr(temp + strlen(a), a);
} out << t << endl;
return 0;
}
Alte întrebări interesante
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Engleza,
8 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă