Informatică, întrebare adresată de anonymousxd0, 8 ani în urmă

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

Răspuns de Sergetec
5

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

anonymousxd0: Multumesc frumos pentru raspuns!!!
Alte întrebări interesante