Aliniere la dreapta
Nu credeai că vei fi prins și tu în trendul DIY, dar uite că folosind un editor de text pentru un proiect de la job ai descoperit funcționalitatea de "aliniere la dreapta".
Ai decis ca ai și tu nevoie de așa ceva în aplicația pe care o creezi și ai început să o implementezi singur...
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ă 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
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
Răspunsuri la întrebare
Răspuns de
3
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
vector<string> v;
string rand_nou;
int nr_max_char=0;
//Citire randuri, determinare numar maxim caractere
while (cin) {
cin >> rand_nou;
if (rand_nou.length() > nr_max_char) nr_max_char = rand_nou.length();
v.push_back(rand_nou);
}
//Completare cu stelute
for (int i = 0; i < v.size()-1; i++) {
for (int j = 0; j < nr_max_char - v[i].length(); j++) cout << '*';
cout << v[i] << endl;
}
}
► Explicatie :
Determinam numarul maxim de caractere pe rand, in fata fiecarui rand afisam un numar de (nr_max_caractere - lungime_rand) stelute.
► Nota :
Pentru a opri citirea apasam CTRL+Z, apoi apasam Enter. Caracterul inserat va avea acelasi rol ca si EOF in fisier.
Anexe:
Patrick100:
Am inteles multumesc.
prog.cpp:12:25: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
if (new_line.length() > nr_max_char) {
~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
for (int i = 0; i < v.size() - 1; ++i) {
~~^~~~~~~~~~~~~~
prog.cpp:18:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string::size_type' {aka 'long unsigned int'} [-Wsign-compare]
for (int j = 0; j < nr_max_char - v[i].length(); ++j) {
Alte întrebări interesante
Engleza,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Informatică,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă