Răspuns :
Răspuns:
#include <cstring>
#include <iostream>
using namespace std;
/* un macro ca să evităm „magic numbers” (acuma știm clar ce reprezintă acel 260) */
constexpr auto BUFFER_SIZE = 260;
/* semnătura funcției */
bool eVocala(const char& caracter);
int main()
{
int nrVocale;
char sirCitit[BUFFER_SIZE];
std::cout << "Introdu nr. minim de vocale per cuvant >> ";
/* citim numărul de vocale */
cin >> nrVocale;
std::cout << "Introdu sirul de caractere >> ";
/* cin.ignore(...) golește buffer-ul de garbage values (ca să poți citi în continuare de la tastatură), trebuie pus deoarece când citim „nrVocale” în buffer o să avem ceva de genul „3\n”, având nevoie de un întreg o să ia doar 3-ul și rămânem în buffer cu „\n” iar când ajungem la cin.getline(...) citește caracterul rămas și programul își termină execuția */
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cin.getline(sirCitit, BUFFER_SIZE);
/* delimitatorii după care separăm cuvintele */
char delimitatori[] = " .,!?";
/* ne folosim de strtok(...) care sparge string-ul inițial în string-uri mai mici după delimitatorii specificați mai sus */
char* cuvantCurent{ strtok(sirCitit, delimitatori) };
while (cuvantCurent) {
/* inițializăm contorul vocalelor la 0 */
int contorVocale{};
/* luăm caracter cu caracter */
for (int i{}; i < strlen(cuvantCurent); i++) {
/* dacă caracterul e vocală incrementăm contorul */
if (eVocala(cuvantCurent[i])) {
contorVocale++;
}
/* dacă avem suficiente vocale-n cuvântul curent îl afișăm și ieșim din for */
if (contorVocale == nrVocale) {
std::cout << cuvantCurent << " ";
break;
}
}
cuvantCurent = strtok(NULL, delimitatori);
}
return 0;
}
bool eVocala(const char& caracter)
{
char vectorVocale[]{ "aeiouAEIOU" };
for (int i = 0; i < sizeof(vectorVocale); i++) {
if (caracter == vectorVocale[i]) {
return true;
}
}
return false;
}
Vă mulțumim că ați ales să vizitați site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări sau aveți nevoie de asistență suplimentară, vă rugăm să ne contactați. Revenirea dumneavoastră ne va bucura, iar pentru acces rapid, nu uitați să ne salvați la favorite!