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;
Răspunsuri la întrebare
Răspuns de
1
#include <stdio.h>#include <cstring>using namespace std;FILE *in=fopen("perechivocale1.in","r");FILE *out=fopen("perechivocale1.out","w");int n,a[5][5],ma,i,j;char c1,c2,s[]="aeiou";
int pozsir(char s[],char c){ int i=0; while(i<5) { if(c==s[i]) break; i++; } return i;}
int main(){ fscanf(in,"%c",&c1); while(!feof(in)) { i=pozsir(s,c1); fscanf(in,"%c",&c2); j=pozsir(s,c2); if(i!=j&&i<5&&j<5) a[i][j]++; c1=c2; } for(i=0;i<5;i++) for(j=0;j<5;j++) if(ma<a[i][j]) ma=a[i][j]; for(i=0;i<5;i++) for(j=0;j<5;j++) if(ma==a[i][j]) fprintf(out,"%c%c ",s[i],s[j]); return 0;}
int pozsir(char s[],char c){ int i=0; while(i<5) { if(c==s[i]) break; i++; } return i;}
int main(){ fscanf(in,"%c",&c1); while(!feof(in)) { i=pozsir(s,c1); fscanf(in,"%c",&c2); j=pozsir(s,c2); if(i!=j&&i<5&&j<5) a[i][j]++; c1=c2; } for(i=0;i<5;i++) for(j=0;j<5;j++) if(ma<a[i][j]) ma=a[i][j]; for(i=0;i<5;i++) for(j=0;j<5;j++) if(ma==a[i][j]) fprintf(out,"%c%c ",s[i],s[j]); return 0;}
financermihul:
vreau programul in c++
Alte întrebări interesante
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Biologie,
9 ani în urmă
Engleza,
9 ani în urmă
Limba română,
9 ani în urmă