Ir ao conteúdo
  • Cadastre-se
glaukito

C++ Programa lê apenas o ELSE

Recommended Posts

Boa noite!

Estou com o seguinte problema:

Independente da opção que eu escolho o programa sempre lê o ELSE. o que eu fiz de errado?

 

 

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <locale.h>
#include <time.h>
#include <conio.h> 
#include <cstdlib>
#include <ctime>

/*4. Junte todas as funções anteriores em um único programa que mostre um menu
com uma opção para cada função e a opção de sair.*/

	float ret (float base, float alt){
	
		float area; 
		
		area= base*alt;
	
		return area;
	}	

	float cir (float raio){
	
		float area; 
		
		area= 3.14*(pow(raio,2)) ;
	
		return area;
	}

	float tri (float base, float alt){
	
		float area; 
		
		area= (base*alt)/2;
	
		return area;
	}

	int main (){

	setlocale (LC_ALL, "Portuguese");
		
	float  area, base, alt, raio;
	int op;
	
	printf ("escolha um:\n[1] retângulo\n[2] círculo\n[3] triângulo\n");
	scanf ("d%", &op);
	fflush(stdin);

		if (op==1){
					
			printf ("largura: ");
			scanf ("%f", &base);
			
			printf ("altura: ");
			scanf ("%f", &alt);
				
			area= ret (base, alt);
			
			printf ("resultado: %2.0f", area);

				}else if (op==2){
				
					printf ("raio: ");
					scanf ("%f", &raio);
			
					area= cir (raio);
			
					printf ("resultado: %f", area);

						}else {
							printf ("largura: ");
							scanf ("%f", &base);
			
							printf ("altura: ");
							scanf ("%f", &alt);
			
							area= tri (base, alt);
			
							printf ("resultado: %f", area);
}
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante

@glaukito  Olá. Apenas um erro na hora de definir seu scanf para ler a opção:

 

printf ("escolha um:\n[1] retângulo\n[2] círculo\n[3] triângulo\n");
scanf ("%d", &op);

Você digitou "d%" no scanf

adicionado 17 minutos depois

Apenas uma dica: Como você está fazendo uso da biblioteca <math.h> você pode calcular a área da círcunferência dessa forma:

 

area = M_PI * pow(raio, 2);

onde M_PI equivale ao PI (~ 3.14159), usando essa biblioteca

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante

Tem um outro ponto que seria interessante frisar. 

Você está definindo a localização para "Portuguese", logo, se você digitar um valor com casas decimais vai ter q fazer uso da vírgula e não mais do ponto para separar as casas decimais.

Se quiser, no entanto, continuar usando acentuação e também continuar fazendo uso do ponto para separar as casas decimais, defina o seu setlocale dessa forma:

 

setlocale (LC_CTYPE, "Portuguese");

Obs: Gostei muito do seu código. Bem elaborado! Manda bala aí no C

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado pela ajuda e feedback, giu_d. O programa está rodando agora.

Grande abraço!

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×