Ir ao conteúdo
  • Cadastre-se
Mauro Del Gaudio

problema com sintaxe linguagem C

Recommended Posts

boa tarde galera, quando eu compilo e digito o primeiro if ,dá certo, mas quando eu digito a idade 13 e o peso 59 por exemplo, parece que calcula outra coisa, por que a conta dá "20 gotas" e de acordo com o que eu escrevi seria 35, o que será que eu fiz de errado?

 

#include<math.h>int main(){  float idade,peso,d1,d2,d3,d4,d5,d6,d7;  printf ("digite a idade do paciente e o peso\n");  scanf("%f %f", &idade,&peso);  if (idade>=12 && peso>=60){  d1=(1000/500)*20;  printf("o paciente deve tomar %f gotas por dose",d1);}  if (idade>=12 && peso<60){  d2=(875/500)*20;  printf("o paciente deve tomar %f gotas por dose",d2);}  if (idade<12 && peso>=5 && peso<=9){  d3=(125/500)*20;  printf("o paciente deve tomar %f gotas por dose",d3);}  if (idade<12 && peso>=9.1 && peso<=16){  d4=(250/500)*20;  printf("o paciente deve tomar %f gotas por dose",d4);}  if (idade<12 && peso>=16.1 && peso<=24){  d5=(375/500)*20;  printf("o paciente deve tomar %f gotas por dose",d5);}  if (idade<12 && peso>=24.1 && peso<=30){  d6=(500/500)*20;  printf("o paciente deve tomar %f gotas por dose",d6);}  if (idade<12 && peso>30){  d7=(750/500)*20;  printf("o paciente deve tomar %f gotas por dose",d7);}  return 0;}
valeu ai!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema está nas divisões... Como você está fazendo uma divisão entre 2 números inteiros é interpretado que você deseja fazer uma divisão inteira, ou seja, 875 dividido inteiramente por 500 dá 1 (com resto 375), e 1 vezes 20 dá 20.

 

Portanto, quando for fazer uma divisão e desejar que o resultado seja um número racional (ponto flutuante) coloque números racionais na divisão, por exemplo, 875.0/500.0 ou 875/500.0 ou 875.0/500...

 

 

Outras dicas que posso te dar é que você não precisa de sete variáveis pra armazenar o valor da dose (d1 até d7), uma única variável seria suficiente (chamada "dose" por exemplo), que receberia o valor calculado da dosagem em cada caso. E aí você pode até apagar os printf()s de dentro do bloco de comandos de cada if, substituindo por um único printf() no final do programa antes do "return 0;".

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

×