Informatică, întrebare adresată de welikeit1234, 9 ani în urmă

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?


tcostel: 1) Nu cred ca elevul Traian stie cuvinte cu lungimea de 200 litere.
2) Sub ce forma vrei ajutorul ?
AntiEaglesDavids: Daca ai wrong answer pe toate exemplele atunci algoritmii NU merg. Si algoritmii nu se invata pe de rost.
welikeit1234: 1. Problema este ca in out apare corect.
welikeit1234: 2. Bine punctat cu lungimea cuvintelor :)))
welikeit1234: AntiEgalesDavis,am incercat si ca tine si rezultatul este acelasi.

Răspunsuri la întrebare

Răspuns de AntiEaglesDavids
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;
}


welikeit1234: multumesc pentru efort,dar continua sa arate wrong answer pe toate testele.. :|
Alte întrebări interesante