Ciao a tutti, sto imparando il C dal manuale di Deitel per l'esame di programmazione 1.
Ho terminato il capitolo degli array e ora ho un problema con un determinato esercizio.
La traccia dice:
"Utilizzate un vettore unidimensionale per risolvere questo problema. Leggete in input 20 numeri, ognuno dei quali sarà compreso tra 10 e 100, estremi inclusi. Ogni volta che leggete un numero, visualizzatelo qualora non sia un duplicato di uno già letto. Preparatevi al "caso peggiore" in cui tutti e 20 numeri siano differenti. Utilizzate il vettore più piccolo per risolvere questo problema."
Il problema che ho riscontrato è che non riesco a implementare nel codice il controllo del <10 e >100
Il codice è questo:
Anche se inserisco 101 o 9 in input continua a chiedermi altri valori fino al 20esimo.
Come posso risolvere? è come se non mi leggesse il controllo sottostante.
Ringrazio in anticipo chi mi aiuterà.
@EDIT Ho risolto, avevo messo && invece di || e ovviamente era impossibile inserire un valore minore di 10 e allo stesso tempo maggiore di 100, non ci avevo fatto caso.
Adesso però non so come andare avanti, ho dichiarato un array temp sempre con size 20 dove concettualmente dovrei memorizzare i dati dell'array a e confrontare poi i successivi inserimenti con quelli già memorizzati in temp credo, solo che non so come farlo praticamente
Ho terminato il capitolo degli array e ora ho un problema con un determinato esercizio.
La traccia dice:
"Utilizzate un vettore unidimensionale per risolvere questo problema. Leggete in input 20 numeri, ognuno dei quali sarà compreso tra 10 e 100, estremi inclusi. Ogni volta che leggete un numero, visualizzatelo qualora non sia un duplicato di uno già letto. Preparatevi al "caso peggiore" in cui tutti e 20 numeri siano differenti. Utilizzate il vettore più piccolo per risolvere questo problema."
Il problema che ho riscontrato è che non riesco a implementare nel codice il controllo del <10 e >100
Il codice è questo:
Codice:
#include <stdio.h>
#include <stdlib.h>
#define SIZE 20
int main()
{
int a[SIZE], i, temp[SIZE], j;
for ( i = 1; i <= SIZE; i++ ){
printf ( "Inserire %d-esimo elemento dell'array (valore compreso tra 10 e 100): ", i );
scanf ( "%d", &a[i] );
if ( a[i] < 10 && a[i] > 100 )
{
printf ( "Errore\n" );
break;
}
}
}
Anche se inserisco 101 o 9 in input continua a chiedermi altri valori fino al 20esimo.
Come posso risolvere? è come se non mi leggesse il controllo sottostante.
Ringrazio in anticipo chi mi aiuterà.
@EDIT Ho risolto, avevo messo && invece di || e ovviamente era impossibile inserire un valore minore di 10 e allo stesso tempo maggiore di 100, non ci avevo fatto caso.
Adesso però non so come andare avanti, ho dichiarato un array temp sempre con size 20 dove concettualmente dovrei memorizzare i dati dell'array a e confrontare poi i successivi inserimenti con quelli già memorizzati in temp credo, solo che non so come farlo praticamente
Ultima modifica: