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:
#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.