Rezolvare completă PbInfo #964 cod

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

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!