Ir para conteúdo
Fórum Script Brasil
  • 0

Alocação Dinâmica*. Tá dando um erro no resultado final


thiengo

Pergunta

código é pra pedir um grupo de pessoas o peso e altura de cada uma e calcular o seu Índice de Massa Corpórea (IMC). O problema é: Ele tá pedindo a mesma informacao 2 vezes e não tá mostrando o imc de cada pessoa.

Alguém pode me ajudar???

#include "stdafx.h"
#include <math.h>
#include <stdlib.h>

float imc(float *peso,float *altura,int qtd)
{ 
float imcr = 0;
for (int i=0; i<qtd; i++)
{ printf("Informe o %d-esimo peso: ",i+1);
scanf("%f",&peso[i]);
}
for (int i=0; i<qtd; i++)
{ printf("Informe a %d-esima altura: ",i+1);
scanf("%f",&altura[i]);
}
for (int i=0; i<qtd; i++)
{ imcr = peso[i] / (altura[i] * altura[i]); 
}
return imcr;
}

int _tmain(int argc, _TCHAR* argv[])
{ 
float *peso,*altura;
int qtd=0;

printf("Será feito o cadastro de quantas pessoas? \n");
scanf("%d",&qtd);
peso=(float*)malloc(qtd*sizeof(float));
altura=(float*)malloc(qtd*sizeof(float));


imc(peso,altura,qtd);
int i;
for (int i=0; i<qtd; i++)
{ printf("O %d-esimo peso é:%f e a altura é:%f e seu IMC é:%f \n",i+1, peso[i], altura[i],imc(peso,altura,qtd));
}
return 0;

Editado por Micheus
Adicionado o delimitador de código [code] [/code]
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Voce esta chamando a função imc() varia vezes, por isso ele pede as informações varias vezes.

A função imc() só retorna o imc da ultima pessoa, pois você está atribuindo varios valores a uma mesma variavel.

Voce poderia criar um ponteiro float *imc no main() e usar ele para receber os valores do imc de cada pessoa.. mais ou menos assim:

//funcao

void imc(float *peso,float *altura, float *imc, int qtd)

{

for (int i=0; i<qtd; i++) {

printf("Informe o %d-esimo peso: ",i+1);

scanf("%f",&peso);

}

for (int i=0; i<qtd; i++){

printf("Informe a %d-esima altura: ",i+1);

scanf("%f",&altura);

}

for (int i=0; i<qtd; i++){

imc = peso / (altura * altura);

}

}

//main

float *peso, *altura, *imc;

.

.

peso=(float*)malloc(qtd*sizeof(float));

altura=(float*)malloc(qtd*sizeof(float));

imc=(float*)malloc(qtd*sizeof(float));

.

.

for (int i=0; i<qtd; i++) {

printf("O %d-esimo peso é:%f e a altura é:%f e seu IMC é:%f \n",i+1, peso, altura, imc);

}

return 0;

}

Ps.: O que esses "_t" estão fazendo main()? e esse stdafx.h? Você não esta usando a math.h.. você não incluiu a stdio.h..

Espero ter ajudado..

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Thiengo --

beradero ainda não estou conseguindo finalizar o código, mas valeu por ter respondido, valeu mesmo.

A questão do "_t" e do stdio.h pertence ao Microsoft Visual C++ 2005 Express Edition, a baixo tem o código inicial de um projeto no Visual a biblioteca stdio.h se encontra dentro da "stdafx.h".

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])

{

return 0;

}

Valeu!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Aqui funciona perfeitamente assim:

#include <stdlib.h>
#include <stdio.h>
void calculaimc(float *peso, float *altura, float *imc, int qtd)
{
   int i;
   for (i = 0; i < qtd; ++i){
       printf("Informe o %d-esimo peso: ",i+1);
       scanf("%f",&peso[i]);
   }
   for (i = 0; i < qtd; ++i){ 
       printf("Informe a %d-esima altura: ",i+1);
       scanf("%f",&altura[i]);
   }
   for (i = 0; i < qtd; ++i)
       imc[i] = peso[i] / (altura[i] * altura[i]);
}

int main(int argc, char* argv[])
{
   float *peso, *altura, *imc;
   int qtd, i;

   printf("Sera feito o cadastro de quantas pessoas? \n");
   scanf("%d",&qtd);
   
   peso = (float *) malloc(qtd * sizeof(float));
   altura = (float *) malloc(qtd * sizeof(float));
   imc = (float *) malloc(qtd * sizeof(float));

   calculaimc(peso, altura, imc, qtd);
   
   for (i = 0; i < qtd; ++i)
      printf("O %d-esimo peso é:%f e a altura é:%f e seu IMC é:%f \n",i+1, peso[i], altura[i], imc[i]);
  
   return 0;
}

Link para o comentário
Compartilhar em outros sites

  • 0

esse agora q você mandou funcionou 100%, foi só adcionar a biblioteca #include <math.h> e uma {.

Valeu mesmo beradero

#include "stdafx.h"

#include <math.h>

#include <stdlib.h>

void func_imc(float *peso,float *altura, float *imc, int qtd)

{

float pes, alt,imc1;

for (int i=0; i<qtd; i++)

{

printf("Informe o %d-esimo peso: ",i+1);

scanf("%f",&pes);

printf("Informe a %d-esima altura: ",i+1);

scanf("%f",&alt);

imc1 = pes / (alt * alt);

imc = imc1;

altura = alt;

peso = pes;

}

}

int _tmain(int argc, _TCHAR* argv[])

{

float *peso,*altura, *imc;

int qtd=0;

printf("Será feito o cadastro de quantas pessoas? \n");

scanf("%d",&qtd);

peso=(float*)malloc(qtd*sizeof(float));

altura=(float*)malloc(qtd*sizeof(float));

imc=(float*)malloc(qtd*sizeof(float));

func_imc(peso, altura, imc , qtd);

int i;

for (int i=0; i<qtd; i++)

{ printf("O %d-esimo peso é:%.2f\n e a altura é:%.2f\n e seu IMC é:%.2f\n \n",i+1, peso, altura,imc);

}

return 0;

}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152.1k
    • Posts
      651.8k
×
×
  • Criar Novo...