Se citeste de la tastatura un text t, avand cel mult 50 de caractere, format din litere si cifre egale cu 1 sau cu 2. Scrie un program C++ care citeste sirul t si il afiseaza pe ecran dupa modificarea sa in memorie, prin inserarea cuvantului unu dupa fiecare aparitie a cifrei 1 in sirul t si inserarea cuvantului doi dupa fiecare aparitie a cifrei 2 in sir. De exemplu, daca t = "ab11cd21" atunci dupa executia programului se obtine t = "ab1unu1unucd2doi1unu".
Răspunsuri la întrebare
Salut!
Ai rezolvarea in C++ mai jos
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char ch[204];
int len;
cin >> ch;
len = strlen(ch); //lungimea sirului
for (int i = 0; i < len; ++i) {
if (ch[i] == '1') {
len += 3; //crestem lungimea
for (int j = len ; j > i; --j) { //copiem caracterele din dreapta
ch[j] = ch[j - 3];
}
//inseram noile caractere
ch[i + 1] = 'u';
ch[i + 2] = 'n';
ch[i + 3] = 'u';
i++;
}
if (ch[i] == '2') {
len += 3; //crestem lungimea
for (int j = len; j > i; --j) { //copiem caracterele din dreapta
ch[j] = ch[j - 3];
}
//inseram noile caractere
ch[i + 1] = 'd';
ch[i + 2] = 'o';
ch[i + 3] = 'i';
i++;
}
}
cout << ch;
return 0;
}
De ce am ales dimensiunea de 204?
- Ni se zice din cerinta ca lungimea maxima poate sa fie de 50 caractere, de aici mi-am luat o marja de eroare de 1, deci ar veni maximul de 51 caractere.
- Presupunem in cel mai nefavorabil caz ca exista un sir de lungimea de 51 caractere, toate fiind 1, atunci vom avea 51 de 1 si 51 de caractere "unu". Cu un calcul matematic ajungem la dimensiunea de 51 + 51 * 3 = 204. Analog pt cazul doar cu cifra 2