Entrada destacada

Como usar enums en Android, kotlin

Programando fórmula de Herón en C (Obtener el área de un triángulo)

Descripción

Veamos como hacer un programa en C para obtener el área de un Triángulo en el caso de saber la longitud de sus 3 lados, o de no saber la longitud de su altura.
Para poder obtener el área de un triángulo cuyo caso sea el que se menciono, se puede usar la fórmula de Herón.

Fórmula de Herón.

La fórmula de herón se usa para hallar el área de un triángulo del cual se conocen sus todos sus lados, el área se calcula a partir del semiperímetro (s) del triángulo de la longitud de sus lados (a, b y c).


              \acute{A}rea = \sqrt{s\left(s-a\right)\left(s-b\right)\left(s-c\right)}
           
               Siendo a, b y c los lados y s el semiperímetro

                                      s = \frac{a+b+c}{2}




Las fórmulas anteriores en terminos de programación pueden ser escritas de la siguiente manera:

1
2
3
    Area = sqrt(s * (s - a) * (s - b) * (s - c)) 

    s = (a + b + c) / 2  

Haciendo un buen uso de los operadores aritméticos y tomando en cuenta la prioridad en que se ejecutan las operaciones el programa puede quedar tan sencillo como se muestra a continuación.

  • Para poder usar la función sqrt (raíz cuadrada), es necesario incluir la librería math.h.
  • También hacemos uso de printf y scanf para solicitar datos al usuario.
  • Sabiendo que el resultado de una división o raíz cuadrada, no siempre da un número entero utilizaremos float para definir todas las variables.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <math.h>

int main(){
    float a, b, c; //lados del triangulo
    printf("Programa que calcula el area de un triangulo.\n\n");
    printf("Ingresa la longitud del lado 1: ");
    scanf("%f", &a);
    printf("Ingresa la longitud del lado 2: ");
    scanf("%f", &b);
    printf("Ingresa la longitud del lado 3: ");
    scanf("%f", &c);

    float s = (a + b + c) / 2;//formula de semiperimetro
    float Area = sqrt(s * (s - a) * (s - b) * (s - c));//formula de heron

    printf("El area del triangulo es: %.3f", Area);

    getch();
    return 0;
}

Optimizando el programa.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <stdio.h>
#include <math.h>

/**
* Función que calcula el valor del semiperimetro (s)
* Parametros (Lados del triángulo) tipo float
*/
float CalculaSemiperimetro(float Lado1, float Lado2, float Lado3){
    if(Lado1 != 0 & Lado2 != 0 & Lado3 != 0){
        float S = (float)(Lado1 + Lado2 + Lado3) / 2;
        return S;
    }
}

/**
* Función que calcula el área de un triángulo con la formula de herón
* Parametros (Lados del triángulo) tipo float
*/
float CalculaArea(float Lado1, float Lado2, float Lado3){
    if(Lado1 != 0 & Lado2 != 0 & Lado3 != 0){
        float S = CalculaSemiperimetro(Lado1, Lado2, Lado3);
        float Area = 0;
        //Comprobamos que los lados si corresponden a un tiángulo
        if( S > Lado1 & S > Lado2 & S > Lado3){
            Area = sqrt(S*(S-Lado1)*(S-Lado2)*(S-Lado3));
        }
        return Area;
    }
}

int main(){
    printf("Programa que calcula el Area de un triangulo utilizando la formula de Heron.\n\n");
    int i = 0;
    float Lados[3];
    for(i = 0; i < 3; i++){
        printf("Ingresa la longitud del lado %i : ",i + 1);
        scanf("%f", &Lados[i]);
    }
    float Area = CalculaArea(Lados[0], Lados[1], Lados[2]);
    if(Area == 0){
        printf("Los datos ingresados no corresponden a los lados de un triangulo.");
    }else{
        printf("El Area del Triangulo cuyos lados fueron ingresados es: %.3f", Area);
    }
    getch();
    return 0;
}

Comentarios

  1. como seria el diagram de flujo del primer programa?

    ResponderEliminar
    Respuestas
    1. Se debe comprobar que los lados sean >0 , porque no existe longitudes negativas

      Eliminar
  2. porque esto if(Lado1 != 0 & Lado2 != 0 & Lado3 != 0){

    ResponderEliminar
    Respuestas
    1. Es para comprobar que el valor de los lados no sea igual a cero, de lo contrario no sería una figura geométrica correcta, en este caso un triángulo correcto.

      Eliminar
  3. hay que mejorarlo pero bueno

    ResponderEliminar

Publicar un comentario