Risolto l'istruzione "if" in C

Finish

Utente Iron
4 Maggio 2022
5
2
3
6
E' l ex 343 di Deitel, in particolare non ho capito bene il funzionamento di if, se esce un valore falso tra il primo e l'ultimo "if", mi salta l'else alla fine.

C:
#include <stdio.h>
int main() {
   printf( "inserisci i 3 lati del triangolo: \n" );
   int a, b, c;
   scanf("%d%d%d", &a , &b , &c );
   //verifica triangolo
   if ( a < b + c ) {
   if ( b < a + c )
   if ( c < a + b )
   if ( a > b - c )
   if ( a > c - b )
   if ( b > a - c )
   if ( b > c - a )
   if ( c > b - a )
   if ( c > a - b )
   printf( "è un triangolo\n" ); }
   else
   printf( "non è un triangolo!\n" );
}
 
Il messaggio "non è un triangolo" viene mostrato solo se il primo if è falso per via delle parentesi graffe (viene chiusa dopo la printf), inoltre else si riferisce sempre ad un solo if precedente, non a più if consecutivi. Invece di usare tanti if diversi potresti farne uno solo con l'operatore AND, per esempio:

C:
if (( a + b > c ) && ( b + c > a ) && ( a + c > b ))
{
    printf( "è un triangolo\n" );
}
else
{
    printf( "non è un triangolo!\n" );
}