Se consideră un text cu maximum 250 de caractere, format din litere mici ale alfabetului
englez şi spaţii. Cuvintele sunt separate printr-un singur spaţiu. Scrieţi programul
Pascal/C/C++ care citeşte un text ca cel menţionat şi afişează pe ecran acele cuvinte în
care vocalele apar în ordine alfabetică (a,e,i,o,u) şi nicio vocală nu se repetă.
Exemplu: Pentrul textul vaporul pluteşte pe mare se va afişa: vaporul pe mare
Răspunsuri la întrebare
VARIANTA FARA FUNCTII
#include<iostream>
using namespace std;
int main() {
char s[251];
cin.getline(s, 251);
int i = 0, n = 0;
for (int i = 0; s[i] != '\0'; i++)
n++;
while (i < n) {
while (s[i] == ' ' && i < n)
i++;
char voc;
int j = i, sem = 1;
while (s[j] != ' ' && j < n)
j++;
j--;
for (int x = i; x <= j; x++)
if (s[x] == 'a' || s[x] == 'e' || s[x] == 'i' || s[x] == 'o' || s[x] == 'u')
for (int y = x + 1; y <= j; y++)
if ((s[y] == 'a' || s[y] == 'e' || s[y] == 'i' || s[y] == 'o' || s[y] == 'u') && s[y] < s[x] || s[y] == s[x])
sem = 0;
if (sem == 1) {
for (int x = i; x <= j; x++)
cout << s[x];
cout << ' ';
}
i = j + 1;
}
return 0;
}
VARIANTA CU FUNCTII
#include<iostream>
#include<cstring>
using namespace std;
int main() {
char s[251];
cin.getline(s, 251);
char * p = strtok(s, " ");
while (p != NULL) {
int sem = 1;
for (int i = 0; i < strlen(p); i++)
if (strchr("aeiou", p[i]) != NULL)
for (int j = i + 1; j < strlen(p); j++)
if (strchr("aeiou", p[j]) != NULL && p[i] > p[j] || p[i] == p[j])
sem = 0;
if (sem == 1)
cout << p << ' ';
p = strtok(NULL, " ");
}
return 0;
}