Quale errore
Indicare l'errore presente nel seguente codice che esprime il calcolo del max tra 20 numeri
conta=1;
scanf("%d",&a);
while(conta<20)
{ printf("inserisci un numero");
scanf("%d",&a);
conta=conta+1;
if(a>max)
max=a;
}
printf("%d",max);
a)L'incremento conta va messo dopo il confronto if (a>max)
b)L'inizializzazione della variabile conta è errata
c)Manca l'inizializzazione della variabile max
d)La printf va messa dentro il ciclo while.
Penso sia D.
conta=1;
scanf("%d",&a);
while(conta<20)
{ printf("inserisci un numero");
scanf("%d",&a);
conta=conta+1;
if(a>max)
max=a;
}
printf("%d",max);
a)L'incremento conta va messo dopo il confronto if (a>max)
b)L'inizializzazione della variabile conta è errata
c)Manca l'inizializzazione della variabile max
d)La printf va messa dentro il ciclo while.
Penso sia D.
Risposte
io penso sia C.
perché non essendo inizializzato max potrebbe contenere un qualsiasi valore, magari più alto di tutti gli a inseriti dall'utente, quindi alla fine ritornerebbe un valore sbagliato...
perché non essendo inizializzato max potrebbe contenere un qualsiasi valore, magari più alto di tutti gli a inseriti dall'utente, quindi alla fine ritornerebbe un valore sbagliato...
E' la c. E' giusto che visualizzi il massimo solo dopo aver fatto tutto il ciclo, altrimenti visualizzeresti tutti i massimi relativi
visto che non conosco il sognificato dell'istruzione
scanf("%d",&a);
ipotizzo significhi che l'utente digita un numero e tale numero viene assegnato alla variabile a.
quindi, con riferimento alla seconda istruzione, noto che:
ma del primo numero non rimane traccia?
cioe' voglio dire che non viene mai confrontato col secondo?
non e' questo un errore?
scusate se ho detto delle castronerie ma ho sonno......
ciao alessandro
scanf("%d",&a);
ipotizzo significhi che l'utente digita un numero e tale numero viene assegnato alla variabile a.
quindi, con riferimento alla seconda istruzione, noto che:
ma del primo numero non rimane traccia?
cioe' voglio dire che non viene mai confrontato col secondo?
non e' questo un errore?
scusate se ho detto delle castronerie ma ho sonno......
ciao alessandro



Max non è inizializzata, è un errore. Ma anche la b) è giusta, in quanto l'array non sarà di 20 numeri. Conta deve essere inizzializzata a 0.
"Crook":
Max non è inizializzata, è un errore. Ma anche la b) è giusta, in quanto l'array non sarà di 20 numeri. Conta deve essere inizzializzata a 0.
Spiacente,ma l'errore è solo uno.Ce l'ha detto anche il prof.
visto che non conosco il sognificato dell'istruzione
scanf("%d",&a);
ipotizzo significhi che l'utente digita un numero e tale numero viene assegnato alla variabile a.
quindi, con riferimento alla seconda istruzione, noto che:
ma del primo numero non rimane traccia?
cioe' voglio dire che non viene mai confrontato col secondo?
non e' questo un errore?
scusate se mi autoquoto, ma non mi avete risposto...

almeno ditemi che ho scritto sciocchezze.
alex
Allora compila quell'algoritmo e convinciti che manca l'inizializzazione di max e che non inserirai 20 numeri interi.
Curiosità: ma tu per fare questi esercizi, provi a compilare il codice per vedere che errori ti dà il compilatore, prima di postarli?
Curiosità: ma tu per fare questi esercizi, provi a compilare il codice per vedere che errori ti dà il compilatore, prima di postarli?
credo che basti cambiare, nella seconda istruzione:
da cosi':
scanf("%d",&a);
a cosi':
scanf("%d",&max);
da cosi':
scanf("%d",&a);
a cosi':
scanf("%d",&max);
Non provo perchè nella prima prova in itinere non ci sarà il compilatore...
Data la tua insistenza proverò...mi stai facendo venirre il dubbio che il testo possa essere errato
"codino75":
credo che basti cambiare, nella seconda istruzione:
da cosi':
scanf("%d",&a);
a cosi':
scanf("%d",&max);
concordo, questo risolverebbe direttamente il problema...
non ho afferrato l'appunto di crook sull'array di 20 numeri però...

codino75 ha scritto:
credo che basti cambiare, nella seconda istruzione:
da cosi':
scanf("%d",&a);
a cosi':
scanf("%d",&max);
concordo, questo risolverebbe direttamente il problema...
per leev:
grazie di avermi ridato fiducia...



ancora un po' e mi convincevo di non capirci piu' un ....
alex
"leev":
non ho afferrato l'appunto di crook sull'array di 20 numeri però...
Se il programma non viene cambiato, non ci sara' l'input venti volte (non c'entra l'array, pensavo ci fosse un array

crook ha scritto:
in realta' a me sembra che l'input sara' effettivamente effettuato 20 volte (1 iniziale + 19 dentro il ciclo) solamente che il primo valore inserito (ed assegnato alla variabile 'a' dal programma) viene sovrascritto dal secondo senza fare il dovuto confronto tra i due (primo input e secondo input (primo nel ciclo)), come avviene invece per tutti i successivi input.
alex
Se il programma non viene cambiato, non ci sara' l'input venti volte (non c'entra l'array, pensavo ci fosse un array Very Happy). Con il cambiamento che ha proposto codino75 tutto si risolve.
in realta' a me sembra che l'input sara' effettivamente effettuato 20 volte (1 iniziale + 19 dentro il ciclo) solamente che il primo valore inserito (ed assegnato alla variabile 'a' dal programma) viene sovrascritto dal secondo senza fare il dovuto confronto tra i due (primo input e secondo input (primo nel ciclo)), come avviene invece per tutti i successivi input.
alex
Si', intendevo questo. Si perde un valore, quindi si rimane con 19 interi.
ENEA, se posso darti un consiglio da amico, cerca di perderci un pò di tempo da solo su questi esercizi. Se ogni minima cosa la posti qui, non fai un passo avanti.