👤

Se citește de la tastatură un text format din cel mult 70 de caractere care conţine cuvinte separate prin spații. Fiecare cuvânt este format din litere mari sau mici ale alfabetului limbii engleze, sau din cifre. Primul şi ultimul caracter ale textului sunt diferite de caracterul spaţiu.

Să se scrie un program, în limbajul C/C++, care:

a) să afişeze pe prima linie a ecranului câte litere mici există în text;

b) să scrie pe următoarele linii cuvintele din textul iniţial care încep cu o consoană.


Răspuns :

#include <iostream>

#include <cctype>

char t[71];

bool vocal(char x) {

   x = tolower(x);

   return x == 'a' || x == 'e' || x == 'i' || x == 'o' || x == 'u';

}

size_t afisare(size_t j) {

   while (t[j] && t[j] != ' ')

       std::cout << t[j++];

       

   std::cout << '\n';

   return j + (t[j] == ' ');

}

size_t salt(size_t j) {

   while (t[j] && t[j] != ' ')

       ++j;

       

   return j + (t[j] == ' ');

}

int main() {

   std::cin.getline(t, 71);

   size_t i;

   

   {

       size_t m = 0;

       

       for (i = 0; t[i]; ++i)

           if (islower(t[i]))

               ++m;

               

       std::cout << m << '\n';

   }

   

   i = 0;

   

   while (t[i])

       i = (!vocal(t[i]) ? afisare : salt)(i);

}