Lati di un Triangolo

di Anonimizzato18300 il
2 risposte
Salve ,
sono alle prese con questo programma:
"/*Legge tre interi e stabilisce se possono essere le lunghezze dei lati di un triangolo.
In caso affermativo, trova la tipologia del triangolo.*/"
Non e' complesso infatti sono riuscita subito ad arrivare alla soluzione, ma ho un piccolo problema ovvero nel momento in cui inserisco i dati funziona correttamente nel dirmi se è un triangolo isoscele o scaleno ma non mi da la giusta risposta nel dirmi se è equilatero. Non capisco dove sta l'errore.
int main(){
int base, lato1, lato2;

 printf("Immetti il valore della base: ");
 scanf("%d", &base);

 printf("Immetti i valori dei lati:\n");
 scanf("%d%d", &lato1, &lato2);

system("cls");
printf("\t-->VERIVICO TRIANGOLO<--\t");

 if(base<lato1+lato2 && lato1<base+lato2 && lato2<base+lato1){
   if(lato1==lato2 || lato1==base || lato2==base){
    printf("\nI dati inseriti corrispondono ad un TRIANGOLO ISOSCELE\n\n");
   }
   else{
    if(lato1==lato2 && lato1==base && lato2==base){
     printf("\nI dati inseriti corrispondono ad un TRIANGOLO EQUILATERO\n\n");
    }
    else
     printf("\nI dati inseriti corrispondo ad un TRIANGOLO SCALENO\n\n");
   }
  }
 else{
  printf("\nNON E' UN TRIANGOLO\n\n");
 }

system("pause");
return 0;
}

2 Risposte

  • Per come hai strutturato tu la logica la differenza la fa l'ordine di controllo del triangolo. Un triangolo equilatero avendo comunque due lati uguali può essere considerato dal tuo programma un triangolo isoscele e quindi si blocca in quel punto.

    Ti basta controllare prima che non sia equilatero, poi isoscele e infine scaleno.
  • Ti ringrazio , ho invertito i due controlli e adesso funziona correttamente!
Devi accedere o registrarti per scrivere nel forum
2 risposte