Rezolvare completă PbInfo #2794 Codificare

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 Adresa de email.

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!