Ir para conteúdo

Arquivado

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

Renato Da Silva

AJUDA em DEV C++

Recommended Posts

Olá, sou novo em programação e estou com dificuldades em resolver um exercicio:

Tendo como dados a altura (h) e o sexo (M – Masculino e F – Feminino), implemente um Programa em Linguagem C que calcule e apresente ao usuário seu peso ideal, a partir das fórmulas apresentadas abaixo: - Homens: (72*h) – 58 - Mulheres: (62.1*h) – 44.7 Obs.: Lembre-se que se for digitado um valor para sexo incorreto, o usuário deverá ser informado.

Eu não consigo fazer com que ele realize a operação caso o usuario seja do sexo masculino, alias, qualquer caracter que eu coloco ele interpreta como se fosse 'F'. Por favor me ajude!

Abaixo está o que eu consegui fazer:

#include<stdio.h>

#include<stdlib.h>

int main(){

float h,hHomem,hMulher;

char sexo;

printf("Digite sua altura:");

scanf("%f",&h);

printf("Informe seu sexo M - Masculino e F - Feminino:");

scanf("%c",&sexo);

if(sexo=='M'){

hHomem=(72*h)-58;

printf("Seu peso ideal:%.2f\n",hHomem);

}else{

if(sexo=='F'){

hMulher=(62.1*h)-44.7;

printf("Seu peso ideal:%.2f\n",hMulher);

}else{

printf("Algo esta errado. Digite a letra correspondente ao seu sexo.");

}

}

system("pause");

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

- Aqui o programa finaliza assim que insiro a altura, neste caso o que parece estar acontecendo é um problema com o Buffer de entrada do teclado ( pesquise sobre isso mais tarde )

Para resolver o problema voce pode tentar por dentro do scanf() o seguinte codigo depois do codigo padrão - %*c isso dirá ao scanf() para que o mesmo limpe o Buffer antes de prosseguir.

- Quando entro com o sexo o programa apresenta uma certa inconsistencia, neste caso acho que o problema era as chaves usadas para os seus else, alterei elas para o que acredito ser o ideal.

- system ( "PAUSE" ) - no lugar desta função tive de colocar getchar(); pois no Linux a função não é suportada!

- int main() - na ultima chave de fechamento de main(), faltou colocar um return 0; antes da chave.

- Abaixo vou deixar como o codigo ficou aqui:

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

int main()

{
    float h,hHomem,hMulher;
    char sexo;

    printf ( "\nDigite sua altura: " );
    scanf ( "%f%*c", &h );

    printf ( "\nInforme seu sexo M - Masculino e F - Feminino: ");
    scanf ( "%c%*c", &sexo );

    if ( sexo=='M')
      {
         hHomem = ( 72 * h ) - 58;
         printf ( "\nSeu peso ideal:%.2f\n", hHomem );
      }
  else

    if ( sexo == 'F' )
      {
         hMulher = ( 62.1 * h ) - 44.7;
         printf ( "\nSeu peso ideal:%.2f\n", hMulher );
      }
  else
      {
        printf ( "\nAlgo esta errado. Digite a letra correspondente ao seu sexo." );
      }

        getchar();
        return 0;
}

Tambem vou deixar um Link para um Topico permanente do proprio forum, falando um pouco sobre o Buffer de entrada do teclado, e sobre as funções system ( "PAUSE" ); e fflush ( stdin );

Link do Tópico: http://forum.imasters.com.br/topic/336835-tutorial-systempause-e-fflushstdin/

Bom por hora é só isso . . . com as dicas acima acho que voce não terá problemas em executar o codigo . . .

Obs.: caso voce comece a ter muitos problemas com a execução de seus futuros codigos, avalie trocar de IDE, a que voce está usando não tem um bom suporte!

Ubuntu 14.04 LTS - GCC 4.8.4 - CodeBlock 13.12

Espero Ter Ajudado ! ! !

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.