Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: droken26 en 5 Febrero 2015, 22:15 PM

Título: Ayuda programa en C calculo areas
Publicado por: droken26 en 5 Febrero 2015, 22:15 PM
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
Título: Re: Ayuda programa en C calculo areas
Publicado por: engel lex en 5 Febrero 2015, 22:24 PM
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
Título: Re: Ayuda programa en C calculo areas
Publicado por: droken26 en 6 Febrero 2015, 20:38 PM
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ítulo: Re: Ayuda programa en C calculo areas
Publicado por: T. Collins en 6 Febrero 2015, 20:54 PM
Con && (AND) solo se cumple la condición si los dos casos son TRUE, con || (OR) basta que uno sea TRUE.
Título: Re: Ayuda programa en C calculo areas
Publicado por: droken26 en 6 Febrero 2015, 21:47 PM
Ok, muchas gracias, solucionado

Saludos