Informatică, întrebare adresată de andreea4452, 8 ani în urmă

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

Răspuns de lucaciucandrei
5

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;

}

Alte întrebări interesante