2
« en: Domingo 25 de Noviembre de 2007, 20:03 »
Hola, estoy intentando hacer un programa que calcule densidades de tal manera que pida al usuario una masa y que despues muestre un menu que calcule el volumen ya sea un rectangulo, un triangulo o un circulo. El programa me compila y se ejecuta pero no hace los calculos bien, si me pudierais ayudar a ver si fallo estare muy agradecida.
Dejo el codigo fuente para que lo vean:
#include <stdio.h>
int menu (void)
{
int opcion;
float masa;
printf("\nMENU:");
printf("\n1. Calcular densidad si el volumen es un rectangulo");
printf("\n2. Calcular densidad si el volumen es un triangulo");
printf("\n3. Calcular densidad si el volumen es un cilindro");
printf("\n4. Salir");
printf("\nIntroduzca opcion a elegir: ");
scanf("%d",&opcion);
return(opcion);
}
void rellenamasa(float masa)
{
printf("\nIntroduzca masa: ");
scanf("%f",&masa);
}
void drect(float masa,float a,float b,float h,float dr)
{
float v;
printf("Introduce a: ");
scanf("%f",&a);
printf("Introduce b: ");
scanf("%f",&b);
printf("Introduce h: ");
scanf("%f",&h);
v=a*b*h;
dr=v*masa;
printf("La densidad es: %f",dr);
}
void dtrian(float masa,float a,float b,float h,float dt)
{
float v;
printf("Introduce a: ");
scanf("%f",&a);
printf("Introduce b: ");
scanf("%f",&b);
printf("Introduce h: ");
scanf("%f",&h);
v=(a*b*h)/2;
dt=v*masa;
printf("La densidad es: %f",dt);
}
void dcilin(float masa,float r,float h,float dc)
{
float v;
printf("Introduce r: ");
scanf("%f",&r);
printf("Introduce h: ");
scanf("%f",&h);
v=3.14*(r*r)*h;
dc=v*masa;
printf("La densidad es %f",dc);
}
int main()
{ /*programa principal*/
float a; /*defino las variables que necesito*/
float b;
int opcion=0;
float h;
float r;
float masa;
float v;
float dr;
float dt;
float dc;
rellenamasa(masa);
do
{
opcion= menu();
switch(opcion)
{
case 1: drect(masa,a,b,h,dr);
break;
case 2: dtrian(masa,a,b,h,dt);
break;
case 3: dcilin(masa,r,h,dc);
break;
case 4:
break;
default: printf("\nERROR al escoger opcion");
break;
}
}
while(opcion<=4);
fflush(stdin);
getchar();
return(1);
} /*fin del cuerpo principal*/