codice:if(b<c) if(c<a) if(b<a){ temp=a; b=c; a=b; c=temp; }else temp=a; a=b; b=temp; }
Questo codice è sbagliato.
Anzitutto, se b < c e c < a allora b sarà sempre anche minore di a (quindi, il terzo if è assolutamente inutile).
L'indentazione fatta male, poi, inganna l'occhio: quel ramo "else" (composto da UNA SOLA ISTRUZIONE) non verrà mai eseguito (per quanto detto prima), quindi, nel caso in cui b non sia minore di c o nel caso in dui c non sia minore di a, semplicemente non viene fatto nulla. Inoltre, se b è minore di c, viene sempre assegnato b ad a e temp a b... qualunque siano i loro valori.
Riscrivo esattamente il tuo codice, usando un'indentazione corretta (e le parentesi graffe che nel tuo codice mancano e che aiuterebbero a capire l'errore):
Questo è esattamente il tuo codice indentato meglio (ho anche esplicitato le graffe implicite):
codice:if(b<c) { if(c<a) { if(b<a){ temp=a; b=c; a=b; c=temp; }else { temp=a; } a=b; b=temp; } }
Come vedi va completamente rivisto.
Ciao.![]()



Rispondi quotando