Come dovrei procedere per creare un programma che, quando viene assegnato a tre lati del triangolo in un array, determinerà se è possibile creare un triangolo valido? [chiuso]

-3

Dati tre lati di un triangolo. Devo determinare scrivendo un programma usando il linguaggio C se posso creare un triangolo valido o non usare questi tre lati del triangolo. Quindi, come devo procedere?

Sappiamo tutti che un triangolo è una forma geometrica con tre lati positivi. Tuttavia, ogni dato tre lati non formerà necessariamente un triangolo. C'è una formula / condizione che il lato più grande di un triangolo è inferiore alla somma degli altri due lati del triangolo. Se questa formula / condizione è soddisfatta, possiamo creare un triangolo valido usando questi tre lati. Ora devo fare un programma per scoprire se posso creare un triangolo valido o non usare quei tre lati positivi. Quindi, prima devo scoprire qual è il più grande valore tra le tre parti. E per questo scopo devo fare un semplice programma come questo ... ..

#include <stdio.h>
int main()

{

   int i,side[3],max;

   for( i  = 0; i < 3; i++ )

      scanf("%d",&side[i]);

      max = side[0];

      for( i = 0; i < 3; i++ ){

             if( side[i] > max )

             max = side[i];
    }

    return 0;

    }

Ora ho i lati più grandi del triangolo attraverso il programma sopra. Ma ora mi sono bloccato qui di seguito, come posso fare un programma per definire se il lato più grande è inferiore alla somma degli altri due lati di quel triangolo.

Supponiamo che usiamo tre diverse variabili piuttosto che l'array di tre dimensioni e se sappiamo che il lato più grande del triangolo è b , semplicemente useremo questa condizione

    if ( b < a + c)
        printf("Valid\n");
    else
        printf("In-valid\n");

ma siccome ho usato un array qui piuttosto che tre diverse variabili, non posso scrivere questo codice semplicemente per determinare se il triangolo sarà valido o meno. Usando un array, è semplicemente facile scoprire il lato più grande del triangolo, ma usando array non posso controllare la condizione di formare un triangolo qui.

Quindi, in questa circostanza, cosa dovrei fare?

    
posta Salman Sourav 01.10.2015 - 21:22
fonte

2 risposte

4

Invece di salvare massimo come VALORE del lato più grande, prova a salvare massimo come indice del valore. Quindi, dal momento che sai quale elemento della matrice contiene il valore massimo, aggiungi gli altri 2 elementi e confronta il valore indicato da max.

    
risposta data 01.10.2015 - 21:54
fonte
4

Anche se è vero che la disuguaglianza triangolare è c < a + b , questo è equivalente a 2c < a + b + c , che è molto più facile da fare. Puoi calcolare il totale parziale senza conoscere il massimo, e quando arrivi alla fine conoscerai già il massimo. Vedi il seguente codice:

#include <stdio.h>
int main() {
  int i, side[3], max = -1, total = 0;

  for(i=0; i < 3; i++) {
    scanf("%d",&side[i]);
    max = side[i] > max ? side[i] : max;
    total += side[i];
  }

  if (2 * max < total) {
    printf("Valid\n");
  } else {
    printf("In-valid\n");
  }

  return 0;
}

Link Ideone

Per inciso, ti consiglio di utilizzare le parentesi graffe per tutti i blocchi di codice, in quanto rende il codice più facile da seguire e utilizza il rientro appropriato. ? : è il operatore ternario , che è un modo per fare istruzioni rapide se in linea.

    
risposta data 01.10.2015 - 22:37
fonte

Leggi altre domande sui tag