Ir para conteúdo

POWERED BY:

Arquivado

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

Thiengo

[Resolvido] Alocação Dinâmica*. Tá dando um erro no resultado fin

Recommended Posts

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;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não está mostrando o IMC das pessoas porque você não está atribuindo a variável de retorno da função imcr a nenhuma variável e está aparecendo duas vezes porque está chamando a função novamente no último loop. Tente assim:

 

CODE
#include "stdafx.h"

#include <math.h>

#include <stdlib.h>

 

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

{

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

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++)

{

imcr = peso / (altura * altura);

}

return imcr;

}

 

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

{

float *peso,*altura, *imcs;

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));

 

 

imcs = 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, altura,imcs);

}

return 0;

}

 

Vê se funciona aí!

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom achei sua resposta em outro forum e você passo por lah tbm :D

soh fiz umas mudanças e vo postar aki pra quem tiver a msm duvida possa consultar aki:

#include <math.h>
#include <stdlib.h>
#include <iostream>

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-%csimo peso: ",i+1,130);
scanf("%f",&pes);
printf("Informe a %d-%csima altura: ",i+1,130);
scanf("%f",&alt);
imc1 = pes / (alt * alt);
imc[i] = imc1;
altura[i] = alt;
peso[i] = pes;
}
}

int main()
{ 
float *peso,*altura, *imc;
int qtd=0;

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));
func_imc(peso, altura, imc , qtd);
int i;
for (int i=0; i<qtd; i++) printf("O %d-%csimo peso %c:%.2f\n e a altura %c:%.2f\n e seu IMC %c:%.2f\n \n",i+1,130,130, peso[i],130, altura[i],130,imc[i]);
system("pause>>NULL");
return 0;
}

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.