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.