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

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.


LinnetO: vă rog, măcar o idee...

Răspunsuri la întrebare

Răspuns de Utilizator anonim
1

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.

Alte întrebări interesante