Rezolvare completă PbInfo #1487 decodificare

Cerința

Un text s de lungime 2•n, unde n este un număr natural par, este codificat în felul următor: se construieşte o matrice pătratică de dimensiune n•n în care primele n caractere ale lui s se găsesc în ordine, de sus în jos, pe diagonala secundară a matricei, iar următoarele n caractere, în ordine, de sus în jos, pe diagonala principală. Restul caracterelor matricei sunt generate aleator. Matricea este transformată într-un şir de caractere cod(s) prin concatenarea şirurilor de caractere reprezentate de liniile acesteia (în ordine, de sus în jos).
Scrieţi un program care, citind din fişierul de intrare şirul de caractere cod(s), execută operaţia de decodificare descrisă mai sus şi afişează textul iniţial s (care a fost codificat) în fişierul de ieşire.

Date de intrare

Fișierul de intrare decodificare.in conține pe prima linie numărul n, iar pe a doua linie un şir format din \( ( {n \over 2} )^2 \) caractere (litere mari sau mici ale alfabetului englez), reprezentând cod(s).

Date de ieșire

Fișierul de ieșire decodificare.out va conține pe prima linie şirul decodificat.

Restricții și precizări

  • 1 ≤ n ≤ 3000
  • Recomandare: pentru tablourile de dimensiuni mari, folosiţi variabile globale.

Exemplu:

decodificare.in

8
TPQAREDSXMRYIUVE

decodificare.out

ADMITERE

Explicație

Matricea de codificare este

T P Q A
R E D S
X M R Y
I U V E

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 decodificare:

#include <fstream>

char matrice[3005][3005];

int main() {
    std::ifstream fin("decodificare.in");
    std::ofstream fout("decodificare.out");

    unsigned n;

    fin >> n;

    n /= 2;

    for(size_t i = 0; i < n; i++)
        for(size_t j = 0; j < n; j++)
            fin >> matrice[i][j];

    for(size_t i = 0; i < n; i++)
        fout << matrice[i][n - i - 1];

    for(size_t i = 0; i < n; i++)
        fout << matrice[i][i];
        
    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 #1487 decodificare

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1487 decodificare 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!