Ir ao conteúdo
  • Cadastre-se

C Código com Funções em C


Posts recomendados

Preciso de ajuda, estou utilizando funções para calcular o IMC, porém quando coloco números FLOAT (com vírgula), ele diz que o resultado é zero.  Alguém poderia me dar uma luz

#include #include 
float LePositivo(A)
{
int i;
do
{
i=0;
printf("Para calcularmos o IMC(Indice de Massa Corporal) precisamos de:\n");
printf("Sua altura(metros)\n");
scanf("%f",&A);
if (A<=0)
{
i++;
printf("Numero invalido\n\n");
}
}while (i==1);
return A;
}
float PositivoLe(B)
{
int i;
do
{
i=0;
printf("Seu peso(kg)\n");
scanf("%f",&B);
if (B<=0)
{
i++;
printf("Numero invalido\n\n");
}
}while (i==1);
return B;
}
int main()
{
float IMC,P,H;
P=LePositivo();
H=PositivoLe();
IMC=(P/(H*H));
printf("Seu IMC eh %f \n", IMC);

return 0;
}

 

Link para o comentário
Compartilhar em outros sites

@Leonardo Drescher Dei uma arrumada no código testa ai

/* Adicionei essas duas bibliotecas para propositos gerais */
#include <stdio.h>
#include <stdlib.h>

/* Ignorar toda essa decalração 
floatLePositivo (A)
{
  int i;
  do
    {
      i = 0;
      printf("Para calcularmos o IMC(Indice de Massa Corporal) precisamos de:\n");
      printf ("Sua altura(metros)\n");
      scanf ("%f", &A);
      if (A <= 0)
	{
	  i++;
	  printf ("Numero invalido\n\n");
	}
    }
  while (i == 1);
  return A;
}

float PositivoLe (B)
{
  int i;
  do
    {
      i = 0;
      printf ("Seu peso(kg)\n");
      scanf ("%f", &B);
      if (B <= 0)
	{
	  i++;
	  printf ("Numero invalido\n\n");
	}
    }
  while (i == 1);
  return B;
}
*/

/* Prototipo da função */
float LePositivo(void);

int main ()
{
  float IMC, P, H;    /* Evite nomes com letras maiusculas */
  printf("\nPara calcularmos o IMC(Indice de Massa Corporal) precisamos de");
  printf("\nSua altura(metros):\t");
  H = LePositivo();
  printf ("\nSeu peso(kg)\t");
  P = LePositivo();
  IMC =P/(H*H);
  printf ("Seu IMC eh %2.2f \n", IMC);
  return(0);
}

/* Implementaçẽos */

float LePositivo(void)
{
  float real;
  do
  {
    scanf("%f",&real);
    getchar();    /* Retira o NewLine do buffer de teclado */
    if(real<0)
    {
      printf("\nPor favor digite apenas numeros positivos");
      printf("\nDigite novamente:\t");
    }
  }while(real<0);
  return(real);
}

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!