Estou fazendo no windows com vscode em ISO 8859-1
Questão proposta: Implemente um algoritmo que leia o nome, telefone, idade, peso, altura e o endereço de uma pessoa e armazene esses dados em uma estrutura. Por fim apresente os dados e IMC dessa pessoa e sua classificação de acordo com os dados abaixo:
- Menor que 18,5: MAGREZA
- Entre 18,5 e 24,9: NORMAL
- Entre 25,0 e 29,9: SOBREPESO
- Entre 30,0 e 39,9: OBESIDADE
- Maior que 40,0: OBESIDADE GRAVE
Meu código:
#include <stdio.h>
#include <locale.h>
int main() {
setlocale(LC_ALL, "Portuguese");
float dadosNum[100];
int parada = 1;
char dadosChar[100];
int escolha;
float imc = 0;
do{
printf("\nDigite o número da informação que deseja armazenar\n");
printf("| 0 -> Encerrar \n");
printf("| 1 -> Nome \n");
printf("| 2 -> Idade \n");
printf("| 3 -> Telefone \n");
printf("| 4 -> Peso \n");
printf("| 5 -> Altura \n");
printf("| 6 -> Endereço \n ");
scanf("%d", &escolha);
switch (escolha)
{
//Deixei os printf nos cases para mostrar que ele está guardando o valor certo.
case 0:
parada = 0;
break;
case 1:
printf("Qual é o seu nome ?\n");
printf("-> ");
getchar();
fgets(dadosChar, sizeof(dadosChar), stdin);
printf("\n%s\n", dadosChar);
break;
case 2:
printf("\nQual é a sua idade ?\n");
printf("-> ");
scanf("%f", &dadosNum[0]);
printf("\n%.1f\n", dadosNum[0]);
break;
case 3:
printf("\nQual é o seu número de telefone ?\n");
printf("-> ");
scanf("%f", &dadosNum[1]);
getchar();
printf("\n%.1f\n", dadosNum[1]);
break;
case 4:
printf("\nQual é o seu peso em Kg ?\n");
printf("-> ");
scanf("%f", &dadosNum[2]);
printf("\n%.1f\n", dadosNum[2]);
break;
case 5:
printf("\nQual é a sua altura em metros ?\n");
printf("-> ");
scanf("%f", &dadosNum[3]);
printf("\n%.2f\n", dadosNum[3]);
break;
case 6:
printf("\nQual é o seu endereço ?\n");
printf("-> ");
getchar();
fgets(dadosChar, sizeof(dadosChar), stdin);
printf("\n%s\n", dadosChar);
break;
default:
printf("\nNúmero inválido\n");
break;
}
} while(parada != 0);
imc = dadosNum[2] / (dadosNum[3] * dadosNum[3]);
printf("\nSeu imc é: %.1f\n", imc);
if (imc < 18.5) {
printf("Você está muito magro\n");
}else if (imc >= 18.5 && imc <= 24.9) {
printf("Você está normal\n");
}else if (imc >= 25.0 && imc <= 29.9) {
printf("Você está com sobrepeso\n");
}else if (imc >= 30.0 && imc <= 39.9) {
printf("Você está obeso\n");
}else if (imc > 40.0){
printf("Você está com obesidade grave\n");
}
printf("\n**Fim do programa**\n");
}
No case 3 ele só armazena até 7 números de entrada certos, o resto fica errado. Gostaria de saber o que eu fiz errado.