PDA

Visualizza la versione completa : Array di vocali.


Tus
11-07-2017, 15:44
Ciao a tutti, avrei una domanda e spero possiate aiutarmi. Devo scrivere un programma C++ che, letto da input un array di 100 caratteri stampi la stringa OK (senza endl,n spaziature) se il numero di vocali minuscole (a,e,i,o,u) distinte in esso contenute al massimo 1 e stampila stringa ERRORE (senza endl, n spaziature) altrimenti.
Non riesco proprio a capire come fare in modo che il programma valuti solo le vocali e veda se ce n' piu' di una, ho provato in diversi modi ma mi valuta tutte le lettere che inserisco. Se riusciste a darmi anche solo un piccolo consiglio forse riuscirei poi da sola a continuare. Vi scrivo come l'avevo impostato, bloccandomi a cosa inserire nell'if.
Grazie a tutti coloro che mi aiuteranno!!



#include <iostream>
using namespace std;
const char n=100;
int main ()
{
char a[n];
char c;
bool vocale=true;
cin>>c;

for (unsigned i=0; i<n; i++)
{
cin>>a[i];
if
vocale=false;

}


if (vocale==true)
cout<<"OK";


else
cout<<"ERRORE";


return 0;
}

scimmiaparlante
11-07-2017, 16:14
usa una variabile che conti le vocali: la inizializzi a zero e se trovi una vocale la incrementi. Se alla fine > 1 dai l'errore

oregon
11-07-2017, 16:20
... ho provato in diversi modi ...

In quali modi?

Tus
11-07-2017, 16:39
Gia' meglio, l'ho scritto. Pero' mi da errore anche se ci sono due a, invece deve contare solo quando ci sono piu' di una vocale diversa. Ad esempio a b c d e=ERRORE
Invece a b c d a=OK

oregon
11-07-2017, 16:45
Il testo dice

stampi la stringa OK ... se il numero di vocali ... distinte in esso contenute al massimo 1

quindi deve stampare OK nel caso venga trovata una sola a e i o u

Se, ad esempio, sono trovate due a o due e ... allora ERRORE ...

Tus
11-07-2017, 16:56
Eh invece il risultato voluto e' diverso.
Un esempio di risultato e' a * a p q a d r , ? che stampa ok perche' come vocale c'e' solo la a e rientra nel massimo di 1.

oregon
11-07-2017, 17:03
Non risulta tanto chiaro ma se hai degli esempi di risultati mostrali tutti qui.

Tus
11-07-2017, 17:05
Infatti non e' chiaro.
Comunque gli esempi di risultati sono:
Se l’array in input fosse a b c d e f g h i l e il programma dovrebbe stampare:ERRORE
Se l’array in input fosse b c d f g h l m n p il programma dovrebbe stampare:OK
Se l’array in input fosse a * a p q a d r , ? il programma dovrebbe stampare:OK

oregon
11-07-2017, 17:08
In questo caso, puoi avere 5 variabili booleane, inizialmente a false, che diventano true se trovi la corrispondente vocale.

E all'uscita dal ciclo controlli che non ci sia pi di una variabile a true.

P.S. A che ti serve

cin>>c;

??

Tus
11-07-2017, 19:35
Avevo fatto una prova mettendo un carattere inizialmente da input per poi confrontarlo con un altro inserito dopo e vedere se erano presenti piu' di una vocale, ma mi sono resa conto che non funzionava.

Loading