Programa do peso ideal [RESOLVIDO]

1. Programa do peso ideal [RESOLVIDO]

Fabricio
Hellsius

(usa Ubuntu)

Enviado em 27/02/2011 - 15:53h

Galera, não sei o que tem de errado no fonte, na saída consigo informar apenas a altura, ai ele ja me da o resultado do peso ideal, sendo que nem mesmo consegui informar o sexo. A saida esta assim:
Informe qual eh a sua altura: 1,75
Informe o sexo.
M para masculino e F para feminino: //Nesta parte ele nem me deixou digitar "m" ou "f" e ja me mostrou 17.400000
O peso ideal eh: 17.400000




#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// Exercicio 5 "Aula4.pdf"
int main ()
{
// Variaveis
float altura, resultado_m, resultado_f;
char sexo;

// Entrada de Dados
printf("Informe qual eh a sua altura: ");
scanf("%f", &altura);
printf("Informe o sexo. "
"\nM para masculino e F para feminino: ");
scanf("%c", &sexo);

// Processamento

if(sexo == 'm')
{
resultado_m = (72.7*altura)-58;
printf("\nO peso ideal eh: %f", resultado_m);
}
else
{
resultado_f = (62.1*altura)-44.7;
printf("\nO peso ideal eh: %f", resultado_f);
}
// Final do Codigo
getch ();
return 0;

}



  


2. MELHOR RESPOSTA

Julio Cesar
imasternex

(usa Ubuntu)

Enviado em 27/02/2011 - 16:06h

Tenta assim:

quando for digitar a altura, utilize . e não ,. EX: 1.76

// Entrada de Dados
printf("Informe qual eh a sua altura: ");
scanf("%f", &altura);
fflush(stdin); //limpa o buffer

3. Re: Programa do peso ideal [RESOLVIDO]

Fabricio
Hellsius

(usa Ubuntu)

Enviado em 27/02/2011 - 16:29h

Deu certo amigo, mas como eu poderia saber que teria de usar este comando (fflush(stdin); //limpa o buffer) em baixo da linha
scanf("%f", &altura); ???




4. fflush(stdin)

Julio Cesar
imasternex

(usa Ubuntu)

Enviado em 27/02/2011 - 16:40h

sabe que nunca me fiz essa pergunta? huahuaua sempre uso o Fflush(stdin) quando o programa pula algo. Isso geralmente acontece qndo utiliza Char e Strings. Mas vou pesquisar.


5. Re: Programa do peso ideal [RESOLVIDO]

Fabricio
Hellsius

(usa Ubuntu)

Enviado em 27/02/2011 - 16:47h

kkkk, normal. =D
Vou pesquisar também, se eu achar a resposta posto aqui.



6. Re: Programa do peso ideal [RESOLVIDO]

Willian
ThePinkShark

(usa Slackware)

Enviado em 27/02/2011 - 18:02h

não use scanf para pegar carateres, utilize no mínimo um getchar();
sexo=getchar();


7. Re: Programa do peso ideal [RESOLVIDO]

Fabricio
Hellsius

(usa Ubuntu)

Enviado em 27/02/2011 - 18:53h

Adicionei a linha sexo = getchar(); e o programa funcionou perfeitamente, mas por que deixar esta linha em vez da outra, como ela funciona?


8. Re: Programa do peso ideal [RESOLVIDO]

Willian
ThePinkShark

(usa Slackware)

Enviado em 27/02/2011 - 19:29h

o scanf é um tanto quanto temperamental e chato de usar quando se trata de caracteres, ele deveria ser utilizado somente para float, string e intergers de mais de um digito.
O getchar() serve eximiamente para pegar caracteres, nada mais, ele já foi criado para resolver esta limitação do scanf.
Isto é mais um problema ou limitação do C, do que uma regra propriamente dita.

PS: Arruma uma variável melhor, "sexo" é muito sugestivo... algo como "genero" ou sei lá. ahahhahahaa


9. Re: Programa do peso ideal [RESOLVIDO]

André
andrezc

(usa Debian)

Enviado em 27/02/2011 - 19:50h

Eu não aconselharia usar flush(stdin). Como eu sei que vão me perguntar o porque, boa leitura:
http://www.cprogramming.com/faq/cgi-bin/smartfaq.cgi?answer=1052863818&id=1043284351


10. Re: Programa do peso ideal [RESOLVIDO]

Willian
ThePinkShark

(usa Slackware)

Enviado em 27/02/2011 - 19:52h

Eu quem condenei o uso, acha que eu vou perguntar o por quê? Não não Sr. Adrezc.
Então corrigindo "Sei que vai perguntar".


11. Re: Programa do peso ideal [RESOLVIDO]

André
andrezc

(usa Debian)

Enviado em 27/02/2011 - 19:58h

Não me referi a você, ThePinkShark, apenas deixei a sugestão de que não é recomendável fazer o uso do trecho citado. Quanto a usar getchar(), eu iria mais além, eu recomendaria o fgets(), assim você poderia controlar a entrada de dados e evitar um buffer overflow.


12. Re: Programa do peso ideal [RESOLVIDO]

Fabricio
Hellsius

(usa Ubuntu)

Enviado em 27/02/2011 - 20:13h

Interessante, vou ler o conteudo do link.
Espero que me ajude a entender por que tive que usar o fflush e por que ele é ruim.




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts