Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida sobre comando if


Mafz729

Pergunta

Boa tarde,

Sou novato em programação e escolhi começar a aprender com a linguagem C.

Já fiz alguns programas básicos ensinados nos cursos que peguei, mas ao tentar fazer um programa diferente com uma estrutura mais complexa tive um problema.

Código:

#include <stdio.h>
#include <stdlib.h>

main()
{
float v_altura,v_peso,v_imc;
	v_imc = (v_altura*v_altura)/v_peso;

	printf("\n\nEste e um programa para medir seu IMC, vamos la ?\n\n");
	printf("Primeiro insira a sua altura EX: 1.80.\n\n");
	scanf("%f",&v_altura);
		printf("\n\nOtimo, agora insira seu peso EX: 78,6.\n\n");
			scanf("%f",&v_peso);
	
	printf("\n\nCalculando..\n\n");
	printf("Prontinho, seu IMC e de: %.2f\n\n\n",(v_peso/(v_altura*v_altura)));
	printf("Tabela IMC:\n\nAbaixo de 17		\tMuito abaixo do peso\nEntre 17 e 18,49	\tAbaixo do peso\nEntre 18,5 e 24,99	\tPeso normal\nEntre 25 e 29,99	\tAcima do peso\nEntre 30 e 34,99	\tObesidade I\nEntre 35 e 39,99	\tObesidade II (severa)\nAcima de 40		\tObesidade III (morbida)\n\n\n");

if (v_imc < 17)
	printf("\n\nVoce esta muito abaixo do peso, contate um profissional de nutricao.\n\n");
	else if ((v_imc > 17 ) || (v_imc < 18.49))
		printf("\n\nVoce esta abaixo do peso ideal, contate um profissional de nutricao.\n\n");
		else 
		if ((v_imc > 18.5) || (v_imc < 24.99))
			printf("\n\nVoce esta no peso normal para sua altura.\n\n");
			else 
			if ((v_imc > 25) || (v_imc < 29.99))
				printf("\n\nVoce esta acima do peso, contate um profissional de nutricao.\n\n");
					else
						printf("\n\nVoce esta muito acima do peso, contate um profissional de nutricao.\n\n");
system("pause");
}

A ideia é que o programa pegue a informação da variável v_imc e com base em seu valor classifique a pessoa. Mas de qualquer modo ele sempre aparece como o último else.

Vocês podem me dizer onde estou errando ?

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

|| significa "ou"

&& que significa "e".

...

Abaixo está o código corrigido, compare com o seu.

#include <stdio.h>
#include <stdlib.h>

int main(){
	float v_altura,v_peso,v_imc;
	printf("\n\nEste e um programa para medir seu IMC, vamos la ?\n\n");
	printf("Primeiro insira a sua altura EX: 1.80.\n\n");
	scanf("%f",&v_altura);
	printf("\n\nOtimo, agora insira seu peso EX: 78,6.\n\n");
	scanf("%f",&v_peso);
	printf("\n\nCalculando..\n\n");
	v_imc=v_peso/(v_altura*v_altura);
	printf("Prontinho, seu IMC e de: %.2f\n\n\n",v_imc);
	printf("Tabela IMC:\n\nAbaixo de 17		\tMuito abaixo do peso\nEntre 17 e 18,49	\tAbaixo do peso\nEntre 18,5 e 24,99	\tPeso normal\nEntre 25 e 29,99	\tAcima do peso\nEntre 30 e 34,99	\tObesidade I\nEntre 35 e 39,99	\tObesidade II (severa)\nAcima de 40		\tObesidade III (morbida)\n\n\n");
	if (v_imc < 17){
		printf("\n\nVoce esta muito abaixo do peso, contate um profissional de nutricao.\n\n");
	}
	else if (v_imc < 18.5){		//Se chegou aqui, é porque IMC>=17, então não precisa testar isso novamente
		printf("\n\nVoce esta abaixo do peso ideal, contate um profissional de nutricao.\n\n");
	}
	else if (v_imc < 25){		//Se chegou aqui, é porque IMC>=18.5, então não precisa testar isso novamente
		printf("\n\nVoce esta no peso normal para sua altura.\n\n");
	}
	else if (v_imc < 30){
		printf("\n\nVoce esta acima do peso, contate um profissional de nutricao.\n\n");
	}
	else {		//Se chegou até aqui, não caiu em nenhum anterior, e portanto IMC>=30
		printf("\n\nVoce esta muito acima do peso, contate um profissional de nutricao.\n\n");
	}
	system("pause");
  	return 0;
}

 

Editado por Hazzu
Link para o comentário
Compartilhar em outros sites

  • 0
Em 16/08/2019 em 12:17, Mafz729 disse:

v_imc = (v_altura*v_altura)/v_peso;

Assim vai calcular corretamente...

v_imc = v_peso/(v_altura*v_altura);

Em 16/08/2019 em 12:17, Mafz729 disse:

printf("Prontinho, seu IMC e de: %.2f\n\n\n",(v_peso/(v_altura*v_altura)));

já que você já tem o valo do imc poderia deixar assim...

printf("Prontinho, seu IMC e de: %.2f\n\n\n", v_imc);

Em 16/08/2019 em 12:17, Mafz729 disse:

else if ((v_imc > 17 ) || (v_imc < 18.49))

Mudar || para && nos demais if como o fera tinha dito.

fsb01.png

Editado por MaxiMous
img duplicada
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...