După primul semestru din clasa I, Traian cunoaşte toate literele şi poate forma cuvinte. Astăzi si-a format o colecţie de cuvinte, dar i-a venit o idee mai năstruşnică: vrea să le aranjeze pe colane, de jos în sus.
Cerinţă
Cunoscând o succesiune de n cuvinte, ajutaţi-l pe Traian să le aranjeze pe coloane astfel încât pe fiecare coloană să fie scris câte un cuvânt, începând de jos în sus, menţinând ordinea cuvintelor.
Date de intrare
Fişierul de intrare alfabetar.in conţine pe prima linie numărul natural n, apoi o succesiune de n cuvinte, câte un cuvânt pe o linie.
Date de ieşire
Fişierul de ieşire alfabetar.out va conţine cele n cuvinte, afişate în ordine, pe verticală de jos în sus, astfel încât pe ultima linie a fişierului se vor afla, de la stânga la dreapta, iniţialele celor n cuvinte citite.
Restricţii
• 0 < n ≤ 100
• Lungimea fiecărui cuvânt este maxim 200 caractere.
• Se face distincţie între literele mici şi literele mari.
Exemple
alfabetar.in
4
Olimpiada
Municipala
de
Info
alfabetar.out
a
al
da
ap
ii
pc
mi o
in f
luen
OMdI
Incerc sa rezolv aceasta problema de o saptamana si algoritmii incercati merg, dar cand pun problema imi apare wrong answer pe toate exemplele. Ma poate ajuta cineva?
Răspunsuri la întrebare
Răspuns de
0
#include <fstream>
#include <cstring>
using namespace std;
ofstream fout("alfabetar.out");
ifstream fin("alfabetar.in");
const int NMAX = 105;
const int MMAX = 205;
int n, Max, ok;
char cuvinte[NMAX][MMAX];
int main()
{
fin >> n;
for(int i=1; i<=n; i++) {
fin >> cuvinte[i];
if(strlen(cuvinte[i]) > Max) Max = strlen(cuvinte[i]);
}
for(int j=Max-1; j>-1; j--) {
ok = 1;
for(int i=1; i<=n; i++) {
if(cuvinte[i][j]) { fout << cuvinte[i][j]; ok = 0; }
else if(ok) continue;
else fout << ' ';
}
fout << '\n';
}
return 0;
}
#include <cstring>
using namespace std;
ofstream fout("alfabetar.out");
ifstream fin("alfabetar.in");
const int NMAX = 105;
const int MMAX = 205;
int n, Max, ok;
char cuvinte[NMAX][MMAX];
int main()
{
fin >> n;
for(int i=1; i<=n; i++) {
fin >> cuvinte[i];
if(strlen(cuvinte[i]) > Max) Max = strlen(cuvinte[i]);
}
for(int j=Max-1; j>-1; j--) {
ok = 1;
for(int i=1; i<=n; i++) {
if(cuvinte[i][j]) { fout << cuvinte[i][j]; ok = 0; }
else if(ok) continue;
else fout << ' ';
}
fout << '\n';
}
return 0;
}
Alte întrebări interesante
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
9 ani în urmă
Geografie,
9 ani în urmă
Limba română,
9 ani în urmă
2) Sub ce forma vrei ajutorul ?