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 .
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!