# PBinfo #188 – inlocuirecuvant – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

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

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
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;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/188)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/188/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-188/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
