Eu fiz esta algorítimo como um exercício na universidade.
Quando eu coloco ele pra rodar, e coloco a primeira opção no meu while, ele roda bem, mas quando ele deve pedir para digitar a opção para o menu switch
ele imprime na tela as opções mas pula direto para defaut não deixando a pessoa digitar qual a opção que deseja.
#include <stdio.h>
float area_quadrado(float num1, float num2){
float resultado;
resultado = num1 * num2;
return(resultado);
}
float area_triangulo(float num1, float num2){
float resultado;
resultado = (num1 * num2) / 2;
return(resultado);
}
float area_circulo(float num1){
float resultado;
resultado = (num1 * num1) * 3.14;
return(resultado);
}
float area_retangulo(float num1, float num2){
float resultado;
resultado = num1 * num2;
return(resultado);
}
float area_trapezio(float num1, float num2, float num3){
float resultado;
resultado = ((num1 + num2)*num3)/2;
return(resultado);
}
float soma(float num1, float num2){
float resultado;
resultado = num1 + num2;
return(resultado);
}
float divide(float num1, float num2){
float resultado;
resultado = num1 / num2;
return(resultado);
}
float multiplica(float num1, float num2){
float resultado;
resultado = num1 *num2;
return(resultado);
}
float subtrai(float num1, float num2){
float resultado;
resultado = num1 - num2;
return(resultado);
}
void main(void){
float num1,num2,num3,n1,n2,resultado;
char i,x; /*variaveis dos comandos switch*/
int opcao;
while(opcao > 0){
printf("Deseja calcular a area de uma forma geometrica ou deseja calcular o conjunto de duas areas?\n Para calcular area, pressione: 1 \n Para calcular o conjunto de duas areas, pressione: 2 \n\n");
scanf("%i", &opcao);
if(opcao == 1){
printf("Escolha qual figura geometrica voce quer calcular: Quadrado = q, Triangulo = t Circulo = c, retangulo = r, Trapezio = T\n");
scanf("%c", &x);
switch(x){
case 'q':
printf("\n Digite a base do quadrado:\n");
scanf("%f",&num1);
printf("Digite a altura do quadrado:\n");
scanf("%f", &num2);
resultado = area_quadrado(num1,num2);
printf("A area eh %0.2f\n\n", resultado);
break;
case 't':
printf("\n Digite a base do triangulo:\n");
scanf("%f",&num1);
printf("Digite a altura do triangulo:\n");
scanf("%f", &num2);
resultado = area_triangulo(num1,num2);
printf("A area eh %0.2f\n\n", resultado);
break;
case 'c':
printf("Digite o raio do circulo:\n");
scanf("%f", &num1);
resultado = area_circulo(num1);
printf("A area eh %0.2f\n\n", resultado);
break;
case 'r':
printf("\n Digite a base do retangulo:\n");
scanf("%f",&num1);
printf("Digite a altura do retangulo:\n");
scanf("%f", &num2);
resultado = area_retangulo(num1,num2);
printf("A area eh %0.2f\n\n", resultado);
break;
case 'T':
printf("Digite a base maior do trapezio:\n");
scanf("%f", &num1);
printf("Digite a base menor do trapezio:\n");
scanf("%f", &num2);
printf("Digite a altura do trapezio:\n");
scanf("%f", &num3);
resultado = area_trapezio(num1,num2,num3);
printf("A area eh %0.2f\n\n", resultado);
break;
default:
printf("\nOpcao invalida!!!\n");
break;}
}
else if(opcao == 2){
printf("Qual operação voce deseja?\nS= somar d= dividir m= multiplicar s= subtrair\n\n"); scanf("%c", &i);
switch(i){
case 'S':
printf("Digite a primeira area:\n");
scanf("%f", &n1);
printf("Digite a segunda area:\n");
scanf("%f", &n2);
resultado = soma(n1,n2);
printf("A soma das areas eh %0.2f ²\n\n", resultado);
break;
case 's':
printf("Digite a primeira area:\n");
scanf("%f", &n1);
printf("Digite a segunda area:\n");
scanf("%f", &n2);
resultado = subtrai(n1,n2);
printf("A subtração das areas eh %0.2f ²\n\n", resultado);
break;
case 'd':
printf("Digite a primeira area:\n");
scanf("%f", &n1);
printf("Digite a segunda area:\n");
scanf("%f", &n2);
resultado = divide(n1,n2);
printf("A divisão das areas eh %0.2f ²\n\n", resultado);
break;
case 'm':
printf("Digite a primeira area:\n");
scanf("%f", &n1);
printf("Digite a segunda area:\n");
scanf("%f", &n2);
resultado = multiplica(n1,n2);
printf("A multiplicação das areas eh %0.2f ²\n\n", resultado);
break;
default:
printf("\nOpção invalida!!!\n");
break;}
}
else
printf("\nOpcao invalida!!!\n");
}
}