Aliniere la dreapta
Cerință
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ă criteriile 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
Exemplu
Date de intrare
Acesta*este
********un****text
***impartit*pe*mai
*multe*linii
Date de ieșire:
*******Acesta*este
********un****text
***impartit*pe*mai
*******multe*linii
Va rog in c++ , este urgent
Răspunsuri la întrebare
Răspuns:
#include <iostream>
#include <iomanip>
#include <cstring>
int main()
{
char text[20][1000];
int nrRand = 0, maxim = 0;
while (std::cin >> text[nrRand]) {
if (maxim < strlen(text[nrRand])) {
maxim = strlen(text[nrRand]);
}
nrRand++;
}
// varianta 1: scriem în fața rândului stelutele una câte una
for (int i = 0; i < nrRand; i++) {
for (int j = strlen(text[i]); j < maxim; j++) {
std::cout << "*";
}
std::cout << text[i] << std::endl;
}
// varianta 2: generăm un șir cu numărul necesar de steluțe și îl scriem în fața rândului
for (int i = 0; i < nrRand; i++) {
std::cout << std::string(maxim - strlen(text[i]), '*') << text[i] << std::endl;
}
// varianta 3: setăm aspectul de afișare a rândului (pentru asta am inclus iomanip)
for (int i = 0; i < nrRand; i++) {
std::cout << std::setw(maxim) << std::setfill('*') << text[i] << std::endl;
}
}
Explicație:
- Specifici de fiecare dată când folosești ceva din acel namespace
- Specifici la început de fișier „using namespace” însemnând că toate pentru care nu s-a specificat namespace să se considere că sunt de acolo