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 ieșire
Anamaria
bacalaureat
Citirea datelor de intrare
Deoarece atunci când introduci șirul de la tastatură nu poți să semnalezi finalul lui, este recomandat să-ți testezi programul folosind un fișier text de intrare. Înainte să trimiți, înlocuiește citirea din fișier cu cin iar programul tău va funcționa corect.
Am nevoie de o soluție în C++, vă rog! Menționez că pot fi orice simboluri, pe lângă litere, nu doar spații și semne de punctuație. Mulțumesc!
Răspunsuri la întrebare
Răspuns de
8
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("vocale.in");
ofstream g("vocale.out");
int k, lung, i, j=-1, nr;
char text[256], vocale[]="aeiouAEIOU", cuv[100];
int main()
{
f >> k;
f.get();
while (f.getline(text,256))
{
lung=strlen(text);
text[lung]=' ';
cuv[0]='\0';
for (i=0; i<=lung; ++i)
{
if (isalpha(text[i]))
{
++j; cuv[j]=text[i];
if (strchr(vocale,text[i])) ++nr;
}
else
{
++j; cuv[j]='\0';
if (nr>=k) g << cuv << "\n";
j=-1; nr=0; cuv[0]='\0';
}
}
}
}
Alte întrebări interesante
Geografie,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
9 ani în urmă
Geografie,
9 ani în urmă
Arte,
9 ani în urmă
Limba română,
9 ani în urmă