fbpx

Problema #275 – PerechiVocale1 – Rezolvari PBInfo

de Mihai-Alexandru

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;
}
Comentarii

S-ar putea sa iti placa