Cerința
Fiind dat un cuvânt s
, format numai din litere, și un cod c
, de aceeași lungime cu s
, format numai din cifre, numim codificare a lui s
pe baza codului c
operația de construire a unui nou șir, în care inițial se copiază prima literă din s
, apoi, parcurgând de la stânga la dreapta restul șirului s
, se adaugă litera curentă la începutul noului șir, dacă cifra corespunzătoare de pe aceeași poziție în c
este pară, sau la finalul noului șir, în caz contrar.
Scrieţi un program care citește de la tastatură, de pe linii diferite, două cuvinte, notate cu s
și c
, fiecare având cel mult 100
de caractere, s
fiind format doar din litere mici ale alfabetului englez, iar c
fiind format doar din cifre. Programul construiește în memorie și afișează pe ecran cuvântul obținut prin codificarea lui s
pe baza lui c
, dacă cele două cuvinte au aceeași lungime, sau mesajul cod incorect
, în caz contrar.
Date de intrare
Programul citește de la tastatură, de pe linii diferite, cele două cuvinte s
și c
Date de ieșire
Programul va afișa pe ecran afișează pe ecran cuvântul obținut prin codificarea lui s
pe baza lui c
, dacă cele două cuvinte au aceeași lungime, sau mesajul cod incorect
, în caz contrar.
Restricții și precizări
- cuvintele citite au cel mult
100
de caractere
Exemplu
Intrare
etalon 025843
Ieșire
oltean
Explicație
Inițial șirul conține litera e
, apoi se adaugă, în ordinea parcurgerii lui s
, literele t
, l
și o
la început, iar restul literelor la final.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema Codificare:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char s[101], t[101], c[101];
cin >> s >> c;
if(strlen(s) != strlen(c))
cout << "cod incorect";
else
{
t[0] = s[0]; t[1] = '\0';
for(int i = 1 ; i < strlen(s) ; i ++)
if( (c[i] - '0') % 2 == 0 )
{
char tmp[101];
strcpy(tmp , t);
t[0] = s[i];
strcpy(t + 1 , tmp);
}
else
{
int n = strlen(t);
t[n] = s[i];
t[n + 1] = '\0';
}
cout << t;
}
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #2794 Codificare
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2794 Codificare de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!