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

Se dă un număr k și un text aflat pe mai multe linii. Să se afișeze toate cuvintele care conțin cel puțin k vocale. Considerăm că un cuvânt este o succesiune continuă de litere.

Date de intrare:
De pe prima linie se va citi numărul k, iar de pe următoarele linii se va citi textul.

Date de ieșire:
Pe ecran se vor afișa cuvintele care conțin cel puțin k vocale. Cuvintele vor fi afișate câte unul pe o linie

Restricții:
***Textul va conține maxim 260 de caractere

Exemplu:
Date de intrare
3
Anamaria
ia nota buna la...bacalaureat
Date de iesire:
Anamaria bacalaureat

Răspunsuri la întrebare

Răspuns de jarvan4eu
1

Răspuns:

#include<iostream>

#include<fstream>

#include<string>

using namespace std;

int main()

{

int k; // k pentru a citi cate repetari trebuie sa fie

string s; // un string in care vom citi linie cu linie

ifstream fisier("Text.txt"); // deschidem fisierul

if (!fisier.is_open()) // daca fisierul nu a putut fi deschis

{

 cout << "Fisierul nu a putut fi deschis";

 return 1; // nu continuam

}

fisier >> k; // citim prima linie

while (getline(fisier, s)) // cat timp avem linii de citit, citim linie cu linie

{

 string cuvant = ""; // aici stocam cuvantul

 int repetat = 0; // aici stocam cate repetari de vocale sunt

 for (int i = 0; i < s.length(); i++) // trecem prin fiecare caracter din linie

 {

  if (s[i] == ' ' || s[i] == '.' || s[i] == ',') // daca caracterul nostru este spatiu , sau . inseamna ca cuvantul nostru sa terminat

  {

   for (int j = 0; j < cuvant.length(); j++) // trecem prin fiecare litera din cuvant

   {

    if (cuvant[j] == 'a' || cuvant[j] == 'e' || cuvant[j] == 'i' || cuvant[j] == 'o' || cuvant[j] == 'u' || cuvant[j] == 'A' || cuvant[j] == 'E' || cuvant[j] == 'I' || cuvant[j] == 'O' || cuvant[j] == 'U') // daca litera curenta este o vocala

    {

     repetat++; // crestem contorul de vocale

    }

   }

   if (repetat >= k) // daca contorul de vocale este mai mare sau egal cu k

   {

    cout << cuvant<<endl; // afisam cuvantul

   }

   repetat = 0; // resetam contorul

   cuvant = ""; // resetam cuvantul

   

  }

  else // daca caracterul curent nu este spatiu

  {

   cuvant = cuvant + s[i]; // atunci mai avem de citit si adaugam caracterul curent la cuvant

  }

   

 }

 for (int j = 0; j < cuvant.length(); j++) // repetam aici acelasi algorithm pentru ca sa procesam si ultimul cuvant din linie

 {

  if (cuvant[j] == 'a' || cuvant[j] == 'e' || cuvant[j] == 'i' || cuvant[j] == 'o' || cuvant[j] == 'u' || cuvant[j] == 'A' || cuvant[j] == 'E' || cuvant[j] == 'I' || cuvant[j] == 'O' || cuvant[j] == 'U')

  {

   repetat++;

  }

 }

 if (repetat >= k)

 {

  cout << cuvant << endl;

 }

 repetat = 0;

 cuvant = "";

}

}

Explicație:

Am comentat si codul ca sa iti fie mai usor de inteles.

Alte întrebări interesante