Un text are cel mult 100 de caractere și este format din cuvinte, numere naturale, spații și
caracterul ,(virgulă). Cuvintele și numerele sunt separate prin cel puțin un spațiu, ca în exemplu.
Scrieți un program C/C++ care citește de la tastatură un text de tipul precizat și afișează pe ecran
un subșir din text care conține toate cifrele impare(1, 3, 5, 7, 9) și are lungimea minimă, sau
mesajul NU, în caz contrar. Dacă există mai multe subșiruri de lungime minimă se va afișa
ultimul.
Răspunsuri la întrebare
Răspuns:
#include <iostream>
#include <string>
using namespace std;
int main() {
string text;
getline(cin, text); // citeste textul complet
string subsir = "NU"; // initializam subsirul cu "NU"
int lungime_subsir = 100; // lungimea initiala a subsirului
for (int i = 0; i < text.size(); i++) {
if (isdigit(text[i]) && (text[i] - '0') % 2 != 0) { // verifica daca caracterul este un numar si este impar
int j = i + 1;
while (j < text.size() && (isdigit(text[j]) && (text[j] - '0') % 2 != 0)) { // cauta urmatoarele cifre impare
j++;
}
if (j - i < lungime_subsir) { // verifica daca lungimea subsirului este mai mica decat lungimea minima
subsir = text.substr(i, j - i); // actualizeaza subsirul
lungime_subsir = j - i; // actualizeaza lungimea subsirului
}
i = j - 1; // muta pozitia cursorului la finalul subsirului
}
}
cout << subsir << endl; // afiseaza subsirul
return 0;
}
Explicație:
Acest program citeste un text de la tastatura si afiseaza subsirul cu lungime minima care contine toate cifrele impare. Daca nu exista un astfel de subsir, se afiseaza mesajul "NU".
P.S: Ce este scris bold in cod nu trebuie neapart scris.