Informatică, întrebare adresată de andreea22deea, 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 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 boiustef
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