Fiind dat un text aflat pe mai multe linii, să se afișeze a doua linie din text.
În cazul în care textul nu conține minim 2 linii se va afișa text prea scurt.
Date de intrare
Un text aflat pe mai multe linii.
Date de ieșire
Pe ecran se va afișa a doua linie din text.
Restricții
Textul va conține maxim 20 de linii, iar fiecare linie conține maxim 100 caractere.
Atunci când textul conține minim 2 linii, fiecare linie va conține minim 1 caracter diferit de spațiu.
Exemplu
Date de intrare
ana invata sa programeze
ea crede ca programarea nu e grea
daca rezolvi suficiente probleme
si esti harnic
Date de iesire
ea crede ca programarea nu e grea
Limbaj C++, va rog atentie la restrictii si precizari, trebuie sa fie valabile pe toate cazurile, multumesc mult!
Răspunsuri la întrebare
Răspuns:
#include <iostream>
#include <string>
#include <vector>
bool
existaCaracterDiferitDeSpatiu(const std::string& linie);
bool
verificaLinii(const std::vector<std::string>& vectorLinii);
int
main()
{
std::vector<std::string> vectorLiniiText;
std::string liniaCitita;
vectorLiniiText.reserve(20);
while (true) {
std::cout << "Introdu linia >> ";
std::getline(std::cin, liniaCitita);
/* am pus eu condiția asta ca să ies din while (tu o să citești până nu mai primești input / nu mai ai linii în fișier etc...) */
if (liniaCitita.empty()) break;
/* ăsta ar fi cazul în care linia are mai mult de 100 de caractere */
if (liniaCitita.length() > 100) exit(EXIT_FAILURE);
vectorLiniiText.push_back(liniaCitita);
/* ăsta ar fi cazul în care citim mai mult de 20 de linii */
if (vectorLiniiText.size() > 20) exit(EXIT_FAILURE);
}
/* dacă avem mai puțin de 2 linii afișăm "Text prea scurt" */
if (vectorLiniiText.size() < 2) {
std::cout << "Text prea scurt\n";
}
/* dacă avem minim 2 linii */
if (vectorLiniiText.size() >= 2) {
/* și toate liniile conțin măcar un caracter diferit de spațiu */
if (verificaLinii(vectorLiniiText)) {
/* afișăm a doua linie din vector */
std::cout << vectorLiniiText.at(1) << "\n";
}
}
return 0;
}
bool
verificaLinii(const std::vector<std::string>& vectorLinii)
{
/* presupunem că toate liniile conțin minim un caracter diferi de spațiu */
bool conditieAdevar{ true };
for (const std::string& linieCurenta : vectorLinii) {
/* dacă găsim o linie ce nu respectă condiția ieșim din for și returnăm false */
if (!existaCaracterDiferitDeSpatiu(linieCurenta)) {
conditieAdevar = false;
break;
}
}
return conditieAdevar;
}
bool
existaCaracterDiferitDeSpatiu(const std::string& linie)
{
/* by default presupunem că nu există niciun caracter diferit de spațiu */
bool conditieAdevar{ false };
for (const char& caracterCurent : linie) {
if (caracterCurent != ' ') {
/* dacă am găsit cel puțin un caracter diferit de spațiu setăm condiția la true și dăm break pentru că nu mai are rost să căutăm altele */
conditieAdevar = true;
break;
}
}
return conditieAdevar;
}
Dacă nu îți iasă ceva, mai trebuie modifiat/adăugat lasă un comentariu și rezolvăm.