Ejemplo de cálculo de volumen y superficie de un triángulo con uso de struct, typedef y funciones con punteros


#include <stdio.h>
/*
a=(1,0,1)
b=(5,0,1)
c=(3,0,5)
d=(1,5,1)

Superficie del triángulo base = (base * altura del triangulo)/2 = 4*4/2=8cm2.
Volumen = superficie * lado A-D = 8*5 = 40cm3.
*/

// Defino los tipos
typedef struct{
int x;
int y;
int z;
}punto;

typedef struct{
punto a;
punto b;
punto c;
punto d;
}triangulo;
// ...................

// Función para cálculo de la superficie.
int superficie(triangulo *mi_triangulo){
int base,altura;
int superficie;

base = (mi_triangulo->b.x - mi_triangulo->a.x);
altura = (mi_triangulo->c.z - mi_triangulo->b.z);
superficie = (base * altura)/2;

printf("La Superficie es %d cm2", superficie);

return superficie;
}

// Función para cálculo del volumen.
void volumen(triangulo *mi_triangulo,int superficie_del_triangulo){
int altura_triangulo, volumen;

altura_triangulo = (mi_triangulo->d.y - mi_triangulo->a.y);
volumen = superficie_del_triangulo * altura_triangulo;
printf(" y su Volumen es %d cm3 \n", volumen);
}

int main() {
// defino lo que voy a usar
triangulo mi_triangulo;
int superficie_del_triangulo;

// Cargo los datos
mi_triangulo.a.x = 1;
mi_triangulo.a.y = 0;
mi_triangulo.a.z = 1;

mi_triangulo.b.x = 5;
mi_triangulo.b.y = 0;
mi_triangulo.b.z = 1;

mi_triangulo.c.x = 3;
mi_triangulo.c.y = 0;
mi_triangulo.c.z = 5;

mi_triangulo.d.x = 1;
mi_triangulo.d.y = 5;
mi_triangulo.d.z = 1;
//...........................

// Se llama a la función de cálculo de superficie, retorna el valor calculado.
superficie_del_triangulo = superficie(&mi_triangulo);

// Se llama directamente a la función de cálculo del volumen, no devuelve nada.
volumen(&mi_triangulo,superficie_del_triangulo);

return 0;
}