C/Visual C - programa en C que me tira resultados malos

 
Vista:

programa en C que me tira resultados malos

Publicado por julio (1 intervención) el 08/07/2010 21:55:14
tenia que hacer un programa usando procedimientos....que calculara areas...
ya lo hice pero cuando lo ejecuto me da resultados malos menos en el area del cuadrado que sale bien..ahh antes de compilar deje dos lineas en // ya que me tiraban error y ahi me dejo compilar
esas lineas son las de declaracion de las funciones antes del main..aqui esta el programa
pliss ayuda busco los errores pero nada...

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void menu();
int area_cuad (int lado);
//int area_triang(int area ,int base,int altura);
float area_circ (float radio);
//int area_rect (int ladoa, int ladob);
main()
{
int opcion,lado,altura,ladoa,ladob,res=1,bas…
float radio;
while (res==1)
{ system("cls");
menu ();
scanf("%d",&opcion);
if (opcion == 1)
{printf("Ingrese la base:");
scanf("%d",&base);
printf("Ingrese altura:");
scanf("%d",&altura);
printf("\nEl area del triangulo rectangulo es: %f",area_triang(area));}
if (opcion == 2)
{printf("Ingrese lado: ");
scanf("%d",&lado);
printf("\nEl area del cuadrado es: %d",area_cuad(lado));}
if (opcion == 3)
{printf("Ingrese el radio de la circunferencia: ");
scanf("%d",&lado);
printf("\nEl area de la circunferencia es: %f",area_circ(radio));}
if (opcion == 4)
{printf("Ingrese lado 1: ");
scanf("%d",&ladoa);
printf("Ingrese lado 2: ");
scanf("%d",&ladob);
printf("El area del rectangulo es: %d",area_rect(ladoa));}
else if (opcion >4)printf("Esa no es una opcion correcta\n");
printf("\nSi desea seguir calculando areas presione 1 de lo contrario presione 2: ");
scanf("%d",&res);
}
getch();

}
void menu()
{system("cls");
printf("Programa de areas \n");
printf("Que area desea calcular:\n");
printf("1;Triangulo\n");
printf("2;Cuadrado\n");
printf("3;Circurferencia\n");
printf("4;Rectangulo\n");
}

int area_cuad (int lado)
{lado = lado * lado;
return (lado);}

int area_triang (int base,int area,int altura)
{area = base * altura /2;
return (area);}

float area_circ (float radio)
{radio = (radio * radio)*3.14;
return (radio);}

int area_rect (int ladoa, int ladob)
{ladoa= ladoa*ladob;
return (ladoa);}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:programa en C que me tira resultados malos

Publicado por Capitan Kirk (97 intervenciones) el 09/07/2010 10:37:17
Area del triangulo:
Has declarado el prototipo como

int area_triang(int area, int base, int altura);

Lees del teclado la base y la altura, pero luego haces la llamada (desde dentro de printf):

area_triang(area)

Al hacer la llamada a una función, los parámetros deben coincidir en tipo y número con lo declarado en el prototipo. Otra cuestión es que para hallar el área del triángulo, no necesitas pasar area como parámetro, es el valor que te va a devolver. Basta con que pases la base y la altura.

Area del círculo:
Primero, un pequeño detalle gramatical. La circunferencia no tiene área, es una línea. Lo que tiene área es el círculo, que es la superficie contenida en el interior de la circunferencia.

Para el área del círculo, en tu programa pides el valor de lado, pero luego llamas a la función pasando como parámetro el radio. Esta variable, radio, no la has iniciado con ningún valor, con lo que al utilizarla el resultado puede ser cualquier cosa. Deberías poner:

scanf("%f", radio);

Area del rectángulo:
Mismo fallo que con el área del triángulo. Has declarado

int area_rect(int ladoa, int ladob);

Lees ambos lados del teclado, perio luego haces la llamada (desde dentro de printf):

area_rect(ladoa)

Repito lo de antes: Los parámetros deben coincidir en tipo y numero con lo declarado en el prototipo.

A primera vista, estos son los fallos que tiene el programa. También creo que sería conveniente que utilices tipos float en lugar de int, al menos para el área del triángulo.

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar