Pentru codificarea textului unui mesaj s-a folosit codificarea ASCII, asociindu-se literelor mari ale alfabetului englez numerele distincte de la 65
la 90
, literelor mici ale alfabetului englez numerele distincte de la 97
la 122
, spaţiului numărul 32
, iar punctului (.
) numărul 46
.
Fiecare linie a mesajului ce urmează a fi codificat, are cel mult 80
de caractere, textul lui fiind format din cuvinte separate printr-un singur spaţiu sau printr-un singur punct, iar cuvintele sunt formate numai din litere ale alfabetului
Codificarea textului mesajului este realizată astfel: fiecare cuvânt din text se scrie în ordine inversă, înlocuindu-se fiecare caracter cu şirul rezultat prin scrierea în ordine inversă a codului asociat acestuia. De exemplu codificarea caracterului z
este şirul 221
. Aceeaşi regulă de codificare se aplică atât spaţiului cât şi punctului.
Textul rezultat în urma codificării va conţine doar cifre, fără spaţii şi fără simboluri de punctuaţie.
Cerința
să se scrie un program care să citească codificarea textului unui mesaj, să decodifice textul şi să afișeze rezultatul decodificării.
Date de intrare
Fișierul de intrare cod.in
conține conţine mai multe linii pe care sunt scrise doar cifre.
Date de ieșire
Fișierul de ieșire cod.out
va conține un număr de linii egal cu numărul de linii din fişierul de intrare, fiecare linie conţinând decodificarea liniei corespunzătoare din fişierul de intrare.
Restricții și precizări
- fișierul de intrare va conține maximum
18
, fiecare linie conținând maximum18
cifre
Exemplu
cod.in
79001795012119015018019723101001237999501611799014111112010113764 9989796410100164 4111116119910138
cod.out
Olimpiada de Informatica. abc.de. Sector
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 cod:
#include <fstream>
#include<cstring>
using namespace std;
ofstream h("cod.out");
void decodific(char s[])
{ int i=0,n=strlen(s),k=0;
char c, b[100],x;
while(i<n)
{ x=(s[i]-'0')+(s[i+1]-'0')*10;
if ((int)x<23){x=x+(s[i+2]-'0')*100;i++;}
i+=2;
if ((x!=32)&&(x!=46))
{b[++k]=char(x);
}
if((x==32)||(x==46)||(i>n-1))
{for(int j=k;j>0;j--) h<<b[j];
k=0;
if((x==32)||(x==46))h<<x;
}
}
}
int main()
{ char s[300];
ifstream g("cod.in");
g.getline(s,300);
decodific(s);
while(!g.eof())
{h<<endl;
g.getline(s,300);
decodific(s);
}
g.close();h.close();
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 #964 cod
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #964 cod 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!