Ayuda programa en C calculo areas

Iniciado por droken26, 5 Febrero 2015, 22:15 PM

0 Miembros y 1 Visitante están viendo este tema.

droken26

Buenas noches, soy nuevo en la programación en C y estoy haciendo un ejercicio, se trata de calcular el area de un cuadrado, rectángulo, triángulo, etc.

Esto lo tengo controlado a través de un menu que da opción de elegir mediante un numero el area que desee calcular, el problema que tengo es que entre los valores introducidos no podrá ser 0 o valor negativo, en caso de introducir alguno de estos datos el programa mostrara un mensaje de error en pantalla y finalizara.

De que forma puedo poner estos argumentos?
Os dejo el código del programa.

Muchas Gracias

#include <stdio.h>


int a;
float cua, rec, tri, cir, rom;
float b,c,d,e,f,g,h,i;
float pi=3.141592;


int main()

{

   
   printf("Seleccione la opcion que desee calcular \n \n");
   printf("1.- CUADRADO: \n");
   printf("2.- RECTANGULO: \n");
   printf("3.- TRIANGULO: \n");
   printf("4.- CIRCULO: \n");
   printf("5.- ROMBO: \n");
   
   scanf("%d", &a);
   
   if(a==1){
       printf("Ingrese el lado del cuadrado: \n");
       scanf("%f", &b);
       cua=(float) b*b;
       printf("El area del cuadrado es: %f \n", cua);
   }

   else if (a==2){
       printf("Ingrese la base y la altura del rectangulo: \n");
       scanf("%f", &c);
       scanf("%f", &d);
       rec=(float) c*d;
       printf("El area del rectangulo es: %f \n", rec);
   }
   else if (a==3){
       printf("Ingrese la base y la altura del triangulo: \n");
       scanf("%f", &e);
       scanf("%f", &f);
       tri=(float) e*f/2.0;
       printf("El area del triangulo es: %f \n", tri);
   }
   else if(a==4){
       printf("Ingrese el radio del circulo: \n");
       scanf("%f", &g);
       cir=(float) pi*g*g;
       printf("El radio del circulo es: %f \n", cir);
   }
   else if(a==5){
       printf("Ingrese la Diagonal mayor y la Diagonal Menor;\n");
       scanf("%f", &h);
       scanf("%f", &i);
       rom=(float) h*i/2.0;
       printf("El area del rombo es: %f \n", rom);
   }
   
   return 0;

}


Mod: Cuando publiques codigo, usa las etiquetas GeSHi

engel lex

luego del scanf de lectura de los datos usa un if para asegurarte que no sean menor que 0, para mostrar el error puedes hacerlo con una funcion, declara una funcion de error y la usas para mostrarlo...

si no, puedes usar switch-case en lugar de if y para saltar al error usas un break prematuro
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

droken26

Gracias engel lex, he seguido tus indicaciones lo que he realizado es:

if ((c<=0) && (d<=0))
            printf("¡¡¡Error!!!, Introduzca un numero superior...\n");
            else if ((c>0) && (d>0))
            printf("El area del rectangulo es %f \n", (float) c*d);

Pero hay un fallo que no se como resolver, si ingresamos el primer numero y ponemos 0 y el segundo ponemos 5, no sale el aviso del error, es decir deberia haber una condicion de forma que si pones el 0 y despues e 5 tambien te salga el mensaje de error. De que forma podria solucionar el pequeño problema.

Gracias.

T. Collins

Con && (AND) solo se cumple la condición si los dos casos son TRUE, con || (OR) basta que uno sea TRUE.

droken26

Ok, muchas gracias, solucionado

Saludos