Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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
Postado (editado)

@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

Editado por giu_d
Melhor a resposta

Compartilhar este post


Link para o post
Compartilhar em outros sites

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






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

×