Rezolvare completă PbInfo #1526 align

Pe lângă marea lui pasiune pentru informatică, lui Andino îi place să se joace cu fişierele. El deschide la întâmplare fişiere text şi se întreabă dacă poate alinia textul la stânga sau la dreapta. Cu toate că el este la curent cu tot ce se întâmplă în domeniul informaticii, el utilizează un editor de text primitiv care nu are funcţii de aliniere, aşa că vă roagă pe voi să-l ajutaţi.

Cerinţă

Să se alinieze un text dat la stânga sau la dreapta.

Date de intrare

Fişierul de intrare align.in conţine pe prima linie numărul n, numărul de linii din fişierul text şi un caracter x. Dacă x este 'S', atunci textul se va alinia la stânga, iar dacă x este 'D', se va alinia la dreapta. Pe următoarele n linii se citeşte textul din fişierul lui Andino.

Date de ieşire

Fişierul de ieşire align.out va conţine pe n linii textul aliniat.

Restricţii şi precizări

  • 1 ≤ n ≤ 100
  • lungimea unei linii nu va depăşi 200
  • dacă îl veţi ajuta pe Andino, veţi primi 100 de puncte şi probabil îl veţi convinge pe Andino să folosească un alt editor de texte

Exemplu

align.in

4 D
lui Andino ii place
mult informatica si doreste
sa mearga la olimpiada
pentru a-si dovedi calitatile de mare informatician

align.out

                                lui Andino ii place
                        mult informatica si doreste
                             sa mearga la olimpiada
pentru a-si dovedi calitatile de mare informatician

Explicaţie

Textul lui Andino a fost aliniat la dreapta.

Un alt exemplu

align.in

4 S
        lui Andino ii place
     mult informatica si doreste
           sa mearga la olimpiada
               pentru a-si dovedi calitatile de mare informatician

align.out

lui Andino ii place
mult informatica si doreste
sa mearga la olimpiada
pentru a-si dovedi calitatile de mare informatician

Explicaţie

Textul lui Andino a fost aliniat la stânga.

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

#include <fstream>
#include <cstring>

using namespace std;

ifstream fin("align.in");
ofstream fout("align.out");

const int NMAX = 110;
const int LMAX = 210;

char words[NMAX][LMAX];
char temp[LMAX];
char alignment;
int n, len[NMAX];

int main()
{
    fin >> n >> alignment;
    fin.get();
    int maxim = -1;
    for (int i = 1; i <= n; ++i) {
        fin.getline(words[i], LMAX);
        len[i] = strlen(words[i]);
        maxim = max(maxim, len[i]);
    }
    if (alignment == 'D') {
        for (int i = 1; i <= n; ++i) {
            if (len[i] != maxim) {
                strcpy(temp, words[i]);
                memset(words[i], 0, sizeof words[i]);
                for (int j = len[i]; j <= maxim; ++j) {
                    words[i][j - len[i] - 1] = ' ';
                }
                strcat(words[i], temp);
            }
        }
    }
    else {
        int pos = 0;
        for (int i = 1; i <= n; ++i) {
            pos = 0;
            while (pos < len[i] && words[i][pos] == ' ')
                ++pos;
            strcpy(temp, words[i] + pos);
            memset(words[i], 0, sizeof words[i]);
            strcpy(words[i], temp);
        }
    }
    for (int i = 1; i <= n; ++i) {
        fout << words[i] << '\n';
    }
    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 #1526 align

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