Două cuvinte se numesc asemenea dacă sunt distincte și au același număr de vocale. Se
consideră vocale literele a, e, i, o, u.
Scrieți un program C/C++ care citește de la tastatură un număr natural n (n[1,102]),
apoi n cuvinte, separate prin Enter. Fiecare cuvânt este format din cel mult 20 de
caractere, numai litere mici ale alfabetului englez. Programul afișează pe ecran, separate
prin câte un spațiu, toate cuvintele asemenea cu ultimul cuvânt citit, sau mesajul
nu exista dacă nu există astfel de cuvinte.
Exemplu: dacă se citesc datele alăturate, se afișează pe ecran, nu neapărat în această
ordine, cuvintele:
lalelele brandusele
9
mereu
primavara
infloresc
ghioceii
lalelele
si
brandusele
de
primavara
#include <iostream>
using namespace std;
// Functie pentru a numara vocalele dintr-un cuvant
int numaraVocale(const char* cuvant) {
int count = 0;
char vocale[] = "aeiou"; // Vocalele sunt a, e, i, o, u
for (int i = 0; cuvant[i] != '\0'; i++) {
for (int j = 0; vocale[j] != '\0'; j++) {
if (cuvant[i] == vocale[j]) {
count++;
break;
}
}
}
return count;
}
int main() {
int n;
cin >> n; // Citim numarul de cuvinte
cin.ignore(); // Ignoara caracterul newline ramas in buffer dupa citirea lui n
char cuvinte[n][21]; // Tablou pentru n cuvinte, fiecare cu maxim 20 caractere (plus terminatorul '\0')
// Citim cuvintele
for (int i = 0; i < n; i++) {
cin.getline(cuvinte[i], 21); // Citim fiecare cuvant
}
// Calculam numarul de vocale al ultimului cuvant citit
int vocaleUltimulCuvant = numaraVocale(cuvinte[n - 1]);
bool gasit = false;
// Verificam fiecare cuvant in parte, dar nu luam in considerare ultimul cuvant
for (int i = 0; i < n - 1; i++) {
if (numaraVocale(cuvinte[i]) == vocaleUltimulCuvant) {
cout << cuvinte[i] << " ";
gasit = true;
}
}
// Daca nu am gasit cuvinte asemenea
if (!gasit) {
cout << "nu exista";
}
return 0;
}