Răspuns :
Răspuns:
#include <iostream>
#include <cstring>
using namespace std;
char s[256], cuv[50], *p, separator[]=" ", voc[]="aeiou", s2[256];
int len, m, i,j;
int main()
{
cin.getline(s,256);
len=strlen(s);
p=strtok(s,separator);
while (p)
{
if (strchr(voc,p[0]))
{
cuv[0]='\0';
m=strlen(p);
for (j=0; j<m; j++)
{
cuv[j]=p[m-1-j];
}
strcat(s2,cuv);
}
else strcat(s2,p);
strcat(s2," ");
p=strtok(NULL, separator);
}
s2[len]='\0';
cout << s2;
return 0;
}
Explicație:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char s[256],*p;
cin.get(s,256);
p=strtok(s," ");
while(p!=0)
{
if(strchr("aeiou",*p)!=0)
strrev(p);
cout<<p<<" ";
p=strtok(NULL, " ");
}
return 0;
}
Am citit sirul si am luat un pointer care ia fiecare cuvant in parte. Daca acesta incepe cu vocala, pentru a usura totul, am folosit functia strrev, care iti da exact rasturnatul cuvantului ( reverse ). Il afisez cu spatiu si apoi se trece la urmatorul cuvant prin acel strtok din final.