Informatică, întrebare adresată de teodortoderitap37w4j, 8 ani în urmă

Se dă un text format din litere ale alfabetului englez și steluțe ('*'), care se poate întinde pe mai multe linii. Aliniază textul la dreapta, astfel încât:

numărul de steluțe dintre 2 cuvinte consecutive de pe aceeași linie să fie păstrate
fiecare linie să se termine cu o literă
la începutul fiecărei linii să fie adăugat un număr suplimentar de steluțe (poate fi 0) astfel încât toate liniile să aibă aceeași dimensiune (același număr de caractere)
numărul de caractere de pe fiecare linie să fie egal cu numărul maxim de caractere de pe o linie din textul inițial
Date de intrare
Se va da un text format din caractere ale alfabetului englez și caractere '*', distribuite pe una sau mai multe linii.

Date de ieșire
Programul va afișa pe ecran textul formatat după criterile prezentate mai sus.

Restricții și precizări
Fiecare linie va conține cel puțin un cuvânt (un grup de litere)
Fiecare linie va conține cel mult 1 000 caractere
1 ≤ numarul de linii din text ≤ 20

Date de intrare:
Acesta*este
********un****text
***impartit*pe*mai
*multe*linii

Date de iesire:
*******Acesta*este
********un****text
***impartit*pe*mai
*******multe*linii

Am incercat si eu ceva doar ca nu am stiut cum sa fac sa aflu cate linii vor fi citite

Anexe:

Răspunsuri la întrebare

Răspuns de andrei750238
3

#define _CRT_SECURE_NO_WARNINGS

#include <iostream>

#include <cstring>

using namespace std;

int main() {

char txt[20][1000];

char line[1000];

//Citire text

int nr_linii = 0;

while (cin.getline(line, 1000)) {

 strcpy(txt[nr_linii++], line);

}

//Determinare lungime maxima

int l_max = 0;

for (int i = 0; i < nr_linii; i++) {

 if (strlen(txt[i]) > l_max) l_max = strlen(txt[i]);

}

//Facem toate liniile de aceasi lungime adaugand stelute

for (int i = 0; i < nr_linii; i++) {

 strcpy(line, "");

 for (int j = 0; j < l_max; j++) {

  strcat(line, "*");

 }

 strcpy(line + l_max - strlen(txt[i]), txt[i]);

 strcpy(txt[i], line);

}

//Afisare rezultat

for (int i = 0; i < nr_linii; i++) {

 cout << txt[i] << endl;

}

}

Anexe:

teodortoderitap37w4j: De ce e nevoie de ctrl z pt a afisa output ul ? Nu poti face sa functioneze pe ideone.com. Pe principiul ala trb sa functioneze codul. Acolo e ca la fisiere text doar ca se rezolva cu cin pentru ca are deja input ul.
teodortoderitap37w4j: Nu mai conteaza. merge perfect
andrei750238: Ctrl + Z este un semnal care spune ca textul s-a terminat de citit.
In citirea de la tastatura este echivalentul End-Of-File pentru fisiere,
teodortoderitap37w4j: "fiecare linie să se termine cu o literă". aici pentru codul tau sa luam exemplu ana** si urmatoarea linie anamaria. Prima linie are lg 5 si a doua 8. codul tau adauga 3 stelute la primul sir dar se precizeaza ca trebuie terminat in litera. deci in loc de ***ana** ar trebui *****ana.
Alte întrebări interesante