Quale errore

Sk_Anonymous
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.

Risposte
leev
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...

_luca.barletta
E' la c. E' giusto che visualizzi il massimo solo dopo aver fatto tutto il ciclo, altrimenti visualizzeresti tutti i massimi relativi

codino75
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 :smt015 :smt015 :smt015

TomSawyer1
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.

Sk_Anonymous
"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.

codino75

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...:cry:
almeno ditemi che ho scritto sciocchezze.
alex

TomSawyer1
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?

codino75
credo che basti cambiare, nella seconda istruzione:

da cosi':

scanf("%d",&a);

a cosi':

scanf("%d",&max);

Sk_Anonymous
Non provo perchè nella prima prova in itinere non ci sarà il compilatore...

Sk_Anonymous
Data la tua insistenza proverò...mi stai facendo venirre il dubbio che il testo possa essere errato

leev
"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

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... :smt026 :smt026 :smt026
ancora un po' e mi convincevo di non capirci piu' un ....

alex

TomSawyer1
"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 :D). Con il cambiamento che ha proposto codino75 tutto si risolve.

codino75
crook ha scritto:


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

TomSawyer1
Si', intendevo questo. Si perde un valore, quindi si rimane con 19 interi.

freddofede
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.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.