Cerinţa
Se dă un text în care cuvintele sunt formate din litere mici ale alfabetului englez şi cifre şi sunt separate prin spaţii şi semne de punctuaţie. Să se determine perechea de vocale alăturate din text care apare de cele mai multe ori.
Date de intrare
Fişierul de intrare perechivocale1.in
conţine textul dat, situat pe mai multe linii.
Date de ieşire
Fişierul de ieşire perechivocale1.out
va conţine pe prima linie perechea de vocale găsită.
Dacă există mai multe asemenea perechi de vocale, se vor afişa toate, în ordine lexicografică şi separate printr-un spaţiu.
Dacă în text nu există nici o pereche de vocale consecutive, se va afişa mesajul “NU”.
Restricţii şi precizări
- cuvintele din text sunt formate din cel mult
40
caractere;
Exemplu
perechivocale1.in
aleea ce strabate valea e-o unduire de pietris scanteietor, de-aceea nu stii daca zboara sau doar inoata in unde aurii
perechivocale1.out
ea oa
Explicație
Perechile ea
şi oa
apar de trei ori. Celelalte perechi de vocale din text apar de mai puţine ori.
#include <bits/stdc++.h> using namespace std; char pv[ ][3] = {"aa","ae","ai","ao", "au", "ea", "ee", "ei", "eo", "eu", "ia", "ie", "ii", "io", "iu", "oa", "oe", "oi", "ou", "ua","oo", "ue", "ui", "uu", "uo" }; int c[26]; char voc[] = {'a','e','i','o','u'}; char vo[3]; ifstream fin ("perechivocale1.in"); ofstream fout ("perechivocale1.out"); int main() { int n; char x[41]; int vmax=0; while (fin >> x) { n=strlen(x); for (int i=0; i<n-1; i++) { if (strchr(voc, x[i]) && strchr(voc, x[i+1])) { vo[0]=x[i]; vo[1]=x[i+1]; vo[2]='\0'; for (int j = 0; j<25; j++) { if (strcmp(vo, pv[j])==0)c[j]++; } } } } for (int i = 1; i<=25; i++) if (c[i]>vmax)vmax=c[i]; for (int i = 1; i<=25; i++) if (c[i]==vmax)fout << pv[i] << " "; return 0; }