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

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ă.


nitzuuvfx89: ajutor va roggg

Răspunsuri la întrebare

Răspuns de Petruccinator
0

#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);

}

Alte întrebări interesante