. Într-un text cu cel mult 102 caractere, cuvintele sunt formate din litere mici ale alfabetului englez și sunt
separate prin câte un spațiu. Scrieți un program C/C++ care citește de la tastatură un text de tipul precizat și
afișează pe ecran, pe linii separate, toate cuvintele sale care conțin o singură vocală distinctă, ca în exemplu.
Dacă nu există niciun astfel de cuvânt, se afișează pe ecran mesajul nu exista. Se
consideră vocale literele din mulțimea a, e, i, o, u.
Exemplu: pentru textul a plantat cinci lalele visinii sau rosii
se afișează pe ecran, nu neapărat în această ordine, cuvintele alăturate. (10p.)
a
plantat
cinci
visinii

Răspuns :

Răspuns:

include <iostream>

#include <cstring>

using namespace std;

int main()

{

char vocale[]="aeiou", sir[103];

int gasit = 0;

cin.get(sir,102);

strrev(sir);

for(int i = 0; i < strlen(sir)-1; i++ )

{

if ( strchr(vocale,sir[i]) )

{

strcpy(sir+i,sir+i+1);

gasit = 1;

break;

}

}

strrev(sir);

if ( gasit == 0 )

cout << "Sirul nu contine vocale.";

else

cout << sir;

}

Explicație:

Pentru a face un numar de pasi mai putini prin parcurgeri am ales sa inversez sirul prin functia strrev( sir ) care practic transforma sirul in oglinditul sau.

Exemplu:

Sirul este: ana are mere

Dupa apelul functiei strrev(sir) sirul de caractere va fi erem era ana.

Astfel ca putem verifica prima vocala care apare in sir, ceea ce am si facut in cod, dupa care, odata ce s-a gasit o vocala, atribuim peste acea pozitie restul sirului ramas cu exceptia acelei vocale.

Pe baza exemplului anterior inseamna ca primul e din erem era ana va fi sters ramanand rem era ana. Urmatorul pas este sa inversam din nou sirul deoarece noi am facut un mic artificiu inversandu-l prima data iar cerinta ne cere sa afisam sirul initial fara acea vocala.

Apelam strrev(sir), sirul va fi: ana are mer

Afisam sirul.