online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
/* * * Este programa calcula o Índice de Adiposidade Corporal (IAC) de uma pessoa * e classifica o nível de gordura corporal baseado no resultado e no sexo biológico. * * FÓRMULA UTILIZADA: * IAC = (Circunferência do Quadril / (Altura * sqrt(Altura))) - 18 * * FLUXO DO PROGRAMA: * 1. O programa entra em um loop solicitando dados ao usuário (Sexo, Circunferência, Altura). * 2. A condição de saída do loop é digitar 'X' no campo do sexo. * 3. Se os dados forem válidos, a função `calculateIAC` aplica a fórmula matemática. * 4. A função `getCategoryIndex` recebe o IAC calculado e o sexo, verificando * em qual faixa de valores o resultado se encaixa. * 5. A função retorna um índice numérico (0 a 5) que é utilizado para acessar * um array de strings e imprimir a classificação correspondente (ex: "Ideal"). * * OBS: As strings de saída (ex: "Baixa", "Moderada") são mantidas em português * para o usuário final, enquanto o código interno está em inglês. * */ #include <stdio.h> #include <math.h> // Protótipo da função que realiza o cálculo do IAC (Índice de Adiposidade Corporal) double calculateIAC(double hipCircumference, double height); // Protótipo da função que determina o índice da categoria baseada no IAC e no sexo int getCategoryIndex(double iacValue, char gender); int main() { // Variáveis para armazenar entrada de dados e resultados char gender = 'i'; double height, circumference, iacValue; // Array de strings contendo as classificações possíveis (índices de 0 a 5) // Mapeamento: 0=Excesso, 1=Moderada, 2=Ideal, 3=Baixa, 4=Excepcionalmente baixa, 5=Inválido char categories[6][25] = { "Excesso de gordura", "Moderada", "Ideal", "Baixa", "Excepcionalmente baixa", "inválido" }; // Loop principal que continua executando até que o usuário digite 'X' while(gender != 'X') { // Solicita entrada dos dados ao usuário printf("Qual o sexo(M/F),circunferencia e altura : \n"); // Lê o caractere referente ao sexo // O espaço antes de %c é importante para consumir o 'Enter' anterior scanf(" %c", &gender); // Verifica se o usuário deseja sair antes de processar os números if (gender != 'X') { // Lê os valores de circunferência e altura (ponto flutuante / double) scanf(" %lf %lf", &circumference, &height); // Chama a função de cálculo e armazena o resultado na variável iacValue iacValue = calculateIAC(circumference, height); // Imprime a classificação correspondente. // A função 'getCategoryIndex' retorna um índice (0 a 5), // usado para acessar o array 'categories' printf(" %s\n", categories[getCategoryIndex(iacValue, gender)]); } } return 0; } // Função que implementa a fórmula matemática do IAC double calculateIAC(double hipCircumference, double height) { // Fórmula: (Circunferência / (Altura * Raiz Quadrada da Altura)) - 18 return (hipCircumference / (height * sqrt(height))) - 18; } // Função que verifica em qual faixa o IAC se enquadra, de acordo com o sexo // Retorna um índice inteiro para ser usado na array de classificações int getCategoryIndex(double iacValue, char gender) { // Lógica para o sexo Masculino ('M') if (gender == 'M') { // Compara o valor do IAC com os limites e retorna o índice da classificação if (iacValue > 25) return 0; // Excesso de gordura else if (iacValue >= 19) return 1; // Moderada else if (iacValue >= 15) return 2; // Ideal else if (iacValue >= 11) return 3; // Baixa else if (iacValue >= 6) return 4; // Excepcionalmente baixa else return 5; // valor inválido (muito baixo) } // Lógica para o sexo Feminino ('F') if (gender == 'F') { // Compara o valor do IAC com os limites e retorna o índice da classificação if (iacValue > 30) return 0; // Excesso de gordura else if (iacValue >= 26) return 1; // Moderada else if (iacValue >= 20) return 2; // Ideal else if (iacValue >= 16) return 3; // Baixa else if (iacValue >= 10) return 4; // Excepcionalmente baixa else return 5; // valor inválido (muito baixo) } // Caso o sexo não seja 'M' nem 'F', retorna o índice 5 ("inválido") return 5; }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue