Post Code
Archive
Latest code guide 06. Jan - Smalltalk
|
Code: 2º GQ Ana Eliza, 2008.1
Posted by rafael on 03:40 04. Dec.
Syntax: C
#include <stdio.h>
#include <math.h>
#include <ctype.h>
float IMC (float peso, float altura){
return peso / pow(altura,2);
}
void situacao (float imc){
if(imc < 18.5)
else if (imc > 25)
else
}
// Retorna , em x e y, a porcentagem (em decimal) do que deve ser perdido/ganho em relação ao peso da pessoa
void recomendacao (float imc, float *x, float *y){
if (imc < 18.5){
*x = 18.5 / imc - 1;
*y = 25 / imc - 1;
} else if (imc > 25){
*x = 1 - 18.5 / imc;
*y = 1 - 25 / imc;
} else {
*x = 0;
*y = 0;
}
}
void somarPeso (float peso, int *totalPessoas, float *somaPesos){
*totalPessoas = *totalPessoas + 1;
*somaPesos = *somaPesos + peso;
}
void main (){
float peso, altura, imc, pesoMedioAbaixo = 0, pesoMedioNormal = 0, pesoMedioAcima = 0, p_Min, p_Max;
int totalPessoas = 0, pessoasAbaixo = 0, pessoasNormal = 0, pessoasAcima = 0;
char continuar;
do {
totalPessoas++;
do {
printf("Informe o peso da pessoa (kg): ");
scanf("%f", &peso);
if (peso < 3 || peso > 300) printf("## PESO INVALIDO ## Informe pesos na faixa de 3 a 300 kg ##\n");
} while (peso < 3 || peso > 300);
do {
printf("Informe a altura da pessoa (metros): ");
scanf("%f", &altura);
if (altura < 0.5 || altura > 3) printf("## ALTURA INVALIDO ## Informe alturas na faixa de 0.5 a 3 metros ##\n");
} while (altura < 0.5 || altura > 3);
imc = IMC (peso, altura);
if(imc < 18.5)
somarPeso (peso, &pessoasAbaixo, &pesoMedioAbaixo);
else if (imc > 25)
somarPeso (peso, &pessoasNormal, &pesoMedioNormal);
else
somarPeso (peso, &pessoasAcima, &pesoMedioAcima);
printf("\n## ANALISE DA PESSOA %i ##\n", totalPessoas );
printf(" Altura: %f\n", altura );
situacao (imc);
recomendacao (imc, &p_Min, &p_Max);
p_Min = peso * p_Min;
p_Max = peso * p_Max;
if(p_Min != 0 && p_Max != 0){
if (imc < 18.5)
printf("Ganhar entre %f kg e %f kg\n", p_Min, p_Max );
else
printf("Emagrecer entre %f kg e %f kg\n", p_Max, p_Min );
}
do {
printf("\nDeseja analisar a situacao de outra pessoa (S=Sim/N=Nao)? ");
continuar = toupper(getchar());
if (continuar != 'S' && continuar != 'N') printf("## RESPOSTA INVALIDA ##\n");
} while (continuar != 'S' && continuar != 'N');
} while (continuar == 'S');
if (pessoasAbaixo != 0)
pesoMedioAbaixo = pesoMedioAbaixo / pessoasAbaixo;
if (pessoasNormal != 0)
pesoMedioNormal = pesoMedioNormal / pessoasNormal;
if (pessoasAcima != 0)
pesoMedioAcima = pesoMedioAcima / pessoasAcima;
printf("\n## DADOS FINAIS ##\n");
printf(" Numero de pessoas analisadas: %i\n", totalPessoas );
printf(" Numero de pessoas abaixo do peso: %i\n", pessoasAbaixo );
printf(" Numero de pessoas com peso normal: %i\n", pessoasNormal );
printf(" Numero de pessoas acima do peso: %i\n", pessoasAcima );
printf(" Peso medio das pessoas analisadas abaixo do peso: %f\n", pesoMedioAbaixo );
printf(" Peso medio das pessoas analisadas com peso normal: %f\n", pesoMedioNormal );
printf(" Peso medio das pessoas analisadas acima do peso: %f\n", pesoMedioAcima );
}
|
New comment