Thiengo 0 Denunciar post Postado Março 15, 2008 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
José Enésio 4 Denunciar post Postado Março 16, 2008 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
Thiengo 0 Denunciar post Postado Março 19, 2008 José Enésio, meu código ainda não ta funcionando, mas valeu por ter respondido, valeu mesmo!!! Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Março 26, 2008 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