Ir ao conteúdo

Posts recomendados

Postado

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);
}
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Postado

@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

Postado

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

Postado

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

Grande abraço!

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!