Sunteți pe pagina 1din 3

/*

Cerința
Se dă un șir de caractere în care cuvintele sunt formate din litere mici și mari
ale alfabetului englez și sunt
separate prin spații. Să se afișeze cuvintele în ordine descrescătoare după numărul
de vocale și să se afișeze fiecare
cuvânt pe câte o linie. Dacă două cuvinte au același număr de vocale atunci ele se
vor ordona descrescător după lungime
iar dacă au aceeași lungime atunci se vor ordona lexicografic.
Date de intrare
Programul citește de la tastatură un șir de caractere
Date de ieșire
Programul va afișa pe ecran cuvintele din text, în ordinea cerută, câte unul pe
linie.
Restricții și precizări
șirul va conține maximum 255 de caractere.
Exemplu
Intrar
ana are mere
Ieșire
mere
ana
are
*/
#include<fstream>
#include <iostream>
#include<cstring>
using namespace std;
int voc(char x[])
{
int i,k=0;
for(i=0;i<strlen(x);i++)
if(strchr("aeiouAEIOU",x[i]))k++;
return k;
}
int main()
{
int i,j,k=0,n,v[256];
char s[201],t[201][31],*p;
cin.getline(s,256);
p=strtok(s," ");
while(p)
{
strcpy(t[k],p);
v[k]=voc(p);
p=strtok(NULL," ");
k++;
}
/* for(i=1;i<=k;i++)cout<<v[i]<<",";
cout<<endl;
for(i=1;i<=k;i++)cout<<t[i]<<",";
cout<<endl;*/
for(i=0;i<k-1;i++)
for(j=i+1;j<k;j++)
{
if(v[j]>v[i])
{
swap(v[i],v[j]);
swap(t[i],t[j]);
}
}
for(i=0;i<k;i++)
{
if(v[i]==v[i+1])
{
if(strlen(t[i])>strlen(t[i+1]))cout<<t[i]<<endl;
else if(strlen(t[i])<strlen(t[i+1]))cout<<t[i+1]<<endl;
else if(strlen(t[i])==strlen(t[i+1]))
{
if(strcmp(t[i],t[i+1])<0)cout<<t[i]<<endl;
else cout<<t[i+1]<<endl;

}
}
else cout<<t[i]<<endl;
}
/* for(i=1;i<k;i++)
for(j=i+1;j<=k;j++)
if(strcmp(t[j],t[i])<0)
swap(t[j],t[i]);
for(i=1;i<=k;i++)cout<<t[i]<<endl;
*/

/*#include<fstream>
#include <iostream>
#include<cstring>
using namespace std;
bool palindrom(char s[])
{
int i=0,j=strlen(s)-1,ok=1;
while(i<j)
{
if(s[i]!=s[j])ok=0;
i++;
j--;
}
return ok;
}
int main()
{
int i=0,ok,n;
char s[256],cuv[256][11];
char *p;
cin.getline(s,256);
p=strtok(s," ,.");
while(p!=NULL)
{
if(palindrom(p))
{
i++;
strcpy(cuv[i],p);
}
p=strtok(NULL," ,.");
}
n=i;
for(i=1;i<n;i++)
for(int j=i+1;j<=n;j++)
if(strcmp(cuv[j],cuv[i])<0)
swap(cuv[j],cuv[i]);
if(n==0)cout<<"IMPOSIBIL";
else cout<<cuv[1];
}
*/

S-ar putea să vă placă și