Ir ao conteúdo

problema com sintaxe linguagem C


Mauro Del Gaudio

Posts recomendados

Postado

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!!
Postado

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;".

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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!