Programa em C para cadastrar aluno
Boa tarde, estou tentando fazer um programa para cadastrar alunos para um trabalho da faculdade
Isso é o que pede no enunciado:
* Uma função separada para calcular o imc, ela recebe dois valores em ponto flutuante (peso e altura) e retorna um valor (o imc) em ponto flutuante.
* Uma estrutura chamada Aluno onde será armazenado nome, e-mail, peso e altura.
* Um vetor de 20 posições que armazenará as estruturas.
* Uma tela de menu, que terá as seguintes opções:
1. Cadastra aluno (apenas 1, escolhendo a posição de 1 a 20).
2. Listar alunos.
3. Apagar aluno (pode apagar pela posição na lista).
4. Listar IMC de alunos (lista todos os nomes, com o valor do IMC e a condição para o IMC de acordo com a tabela acima).
0. Sair.
O programa deve permanecer em execução até o usuário escolher a opção "Sair".
até agora consegui fazer quase tudo, mas quando eu peço pra listar o valor dos floats aparecem como 0.00, mesmo eu tendo colocado um valor diferente para eles.
Esse é meu código:
#include<stdio.h>
#include<stdlib.h>
#include <locale.h>
struct Aluno{
char nome[20];
char email[20];
float peso;
float altura;
float IMC;
};
struct Aluno cad_aluno[20];
float calculaimc(float p, float a){
float resultado = p / (a*a);
return resultado;
}
int main (){
int opcao, i, l;
setlocale(LC_ALL, "Portuguese");
for (i = 1; i <=20;){
printf("\n\nCadastro dos Alunos: \n");
printf("Digite o numero de uma das opções: \n");
printf("1- Cadastrar aluno \n");
printf("2- Listar alunos \n");
printf("3- Apagar alunos \n");
printf("4- Listar IMC de alunos \n");
printf("0- Sair \n");
scanf("%d", &opcao);
switch(opcao) {
case 1:
fflush(stdin);
printf ("\n Nome do aluno:");
scanf ("%s", &cad_aluno[i].nome);
fflush(stdin);
printf ("\n Email do aluno:");
scanf ("%s", &cad_aluno[i].email);
fflush(stdin);
printf ("\n Peso do aluno: ");
scanf ("%f", &cad_aluno[i].peso);
fflush(stdin);
printf ("\n Altura do aluno: ");
scanf ("%f", &cad_aluno[i].altura);
fflush(stdin);
cad_aluno[i].IMC = calculaimc(cad_aluno[i].peso, cad_aluno[i].altura);
fflush(stdin);
i++;
break;
case 2:
for (l = 1; l <=20; l++) {
if(l < i){
printf("\n\nNome: %s", &cad_aluno[l].nome);
printf("\nEmail: %s", &cad_aluno[l].email);
printf("\nPeso: %1.2f", &cad_aluno[l].peso);
printf("\nAltura: %1.2f", &cad_aluno[l].altura);
printf("\nIMC: %1.2f", &cad_aluno[l].IMC);
}
else{
l = 20;
}
}
break;
case 3 :
break;
case 4 :
for (l = 0; l <20; l++) {
if(l < i){
printf("IMC do aluno %d: %1.2f", l, &cad_aluno[l].IMC);
}
else{
l = 20;
}
}
break;
case 0 : exit(0);
default:
printf ("Opção invalida\n");
break;
}
}
return 0;
}
Desde já agradeço.Discussão (1)
Carregando comentários...