Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

GustavoSoaresLima

Programa em C para cadastrar aluno

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites
#include<stdio.h>
#include<stdlib.h>
struct Aluno{
    char nome[30];
    char email[30];
    float peso;
    float altura;
    float imc;
}alunos[20];
float calcular_imc(float altura, float peso){
    float imc = peso/(altura*altura);
}
int main(){
    int pos_cadastradas[30];
    int index = 0;
    int pos;
    int opcao;
    do{
        printf("1.Cadastrar | 2.Listar | 3.Remover | 4.Listar IMC | 0.Sair:");
        scanf("%d",&opcao);
        switch(opcao){
            case 1:
                pos = 0;
                printf("\nPosicao(de 0 a 19):");
                scanf("%d",&pos);
                if(pos <= 19){
                    fflush(stdin);
                    printf("Nome:");
                    gets(alunos[pos].nome);
                    printf("Email:");
                    gets(alunos[pos].email);
                    printf("Peso:");
                    scanf("%f",&alunos[pos].peso);
                    printf("altura:");
                    scanf("%f",&alunos[pos].altura);
                    alunos[pos].imc = calcular_imc(alunos[pos].altura,alunos[pos].peso);
                    pos_cadastradas[index] = pos;
                    index++;
                    break;
                    printf("\n1.Cadastrar | 2.Listar | 3.Remover | 4.Listar IMC | 0.Sair:");
                    scanf("%d",&opcao);
                }else{
                    printf("Opcao invalida, fechando algoritmo...");
                    exit(-1);
                }
            case 2:
                for(int i = 0; i < index; i++){
                    printf("\nNome:%s",alunos[pos_cadastradas[i]].nome);
                    printf("\nEmail:%s",alunos[pos_cadastradas[i]].email);
                    printf("\nAltura:%f",alunos[pos_cadastradas[i]].altura);
                    printf("\nIMC:%f",alunos[pos_cadastradas[i]].imc);

                }
                    break;
                    printf("\n1.Cadastrar | 2.Listar | 3.Remover | 4.Listar IMC | 0.Sair:");
                    scanf("%d",&opcao);
            case 3:
                exit(0);
            case 4:
                  for(int i = 0; i < index; i++){
                    printf("\nIMC:%f",alunos[pos_cadastradas[i]].imc);
                }
                 break;
                 printf("\n1.Cadastrar | 2.Listar | 3.Remover | 4.Listar IMC | 0.Sair:");
                 scanf("%d",&opcao);
            default:
                 printf("Opcao invalida, fechando algoritmo...");
                 exit(-1);
        }
    }while(opcao != 0);
    system("PAUSE");
}

Não sei como remover, então botei exit(0) no lugar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por biza
      Ola
      Estou  a construir um datalogger em código C.Desta forma necessito passar os dados entre ficheiros. O meu problema está na inclusão de algumas variáveis no topo de um arquivo .txt onde os dados são salvos. Variáveis como tempo de data e hora, id do dispositivo e muito mais... Para isso preciso de ajuda, gostaria que os dados estivessem disponíveis para todos os arquivos, até aí é fácil, basta incluir a variável como extern, no arquivos *.h e incluí-lo em todos os outros que você deseja que a variável esteja disponível. mas como posso fazer para ter acesso a ele dentro do array que preciso?
      Exemplo: main.c
      #include "main.h" char dateTimeFormat[24]; void main(void){ dateTimeFormat = "22-02-22 13:23:04"; } main.h
      extern char dateTimeFormat[24];  
      teste.c
       
      #include "main.h" extern char dateTimeFormat[24]; /*Header .txt file initialization*/ volatile char headerFile[] ="\n\n" "# HEALT MONITORING SYSTEM \r\n" "# DEVELOPED: BIZA \r\n" "# VERSION: B \r\n" "# DATATIMECAPTURE:"+dateTimeFormat+ "\r\n" "# SAMPLINGFREQUENCY: 500 \r\n" "# SAMPLECHANNELS: 1 2 3 4 5 6 7 8 \r\n" "# SAMPLINGRESULUTION: 24 \r\n" "# IDDEVICE: HEALTHY \r\n" "# ENDOFHEADER  
      Como posso incluir a variável "dateTimeFormat" dentro do headerFile como descrevi acima?
       
    • Por OSVALDO ARANTES JÚNIOR
      Preciso validar um acesso a uma pagina, que so pode ser acessada uma vez a cada 20 respostas certas, estou usando  if( $query->num_rows % 20 == 0 ) , so que toda vez que a pagina carrega, executa o comando poderiam me dar uma dica de como prosseguir depois das vinte respostas para 40 e depois somente com 60.. 80...  e assim redirecionar automaticamente de 20 em 20.
    • Por oromotoceu
      #include <stdio.h>
      #include <stdlib.h>
      #define MAXTAM 1000
      int Frente, Tras, Lista[MAXTAM];
      void Lista_Construtor(){
      Frente=0;
      Tras=-1;
      }
      int Lista_Vazia(){
      if(Tras==-1)
      return 1;
      else
      return 0;
      }
      int Lista_Cheia(){
      if(Tras==MAXTAM-1)
      return 1;
      else
      return 0;
      }
      int Lista_Tamanho(){
      return Tras+1;
      }
      int Lista_Inserir_Inicio(int Valor){
      if(Lista_Cheia()){
      return 0;
      }else{
      /*se quero inserir na posição 0,
      vou deslocar todos os elementos para frente*/
      for(int i=Tras+1;i>Frente;i--){
      Lista=Lista[i-1];
      }
      Lista[Frente]=Valor;
      Tras++;
      return 1;
        }
      }
      int Lista_Inserir_Fim(int Valor){
      if(Lista_Cheia()){
      return 0;
      }else{
      Tras++;
      Lista[Tras]=Valor;
      return 1;
        }
      }
      int Lista_Inserir(int Valor, int Posicao){
      if(Lista_Cheia()){
      return 0;
      }else{
      /* Para verificar se a posição
      está no meio da lista */
      if(Posicao>Frente && Posicao<Tras){
      for(int i=Tras+1;i>Posicao;i--){
      Lista=Lista[i-1];
      }
      Lista[Posicao]=Valor;
      Tras++;
      return 1;
      }else{ 
      return 0;
         }
        }
      }
      int Lista_Remover_Inicio(int *Valor){
      if(Lista_Vazia()){
      return 0;
      }else{
      *Valor =Lista[Frente];
      for(int i=Frente;i<Tras;i++){
      Lista=Lista[i+1];
         }
      Tras--;
        }
      }
      int Lista_Remover_Fim(int *Valor){
      if(Lista_Vazia()){
      return 0;
      }else{
      *Valor=Lista[Tras];
      Tras--;
      return 1;
        }
      }
      int Lista_Remover(int *Valor, int Posicao){
      if(Lista_Vazia()){
      return 0;
      }else{
      if(Posicao>Frente && Posicao<Tras){
      *Valor=Lista[Posicao];
      for(int i=Posicao;i<Tras;i++){
      Lista=Lista[i+1];
      }
      Tras--;
      return 1;
         }
        }
      }
      int Lista_Get_toda(int *Valor){
      if(Lista_Vazia()){
      return 0;
      }else{
      *Valor=Lista[Frente];
      return 1;
        }
      }
      int Lista_Get_inicio(int *Valor){
      if(Lista_Vazia()){
      return 0;
      }else{
      *Valor=Lista[Frente];
      return 1;
        }
      }
      int Lista_Get_Fim(int *Valor){
      if(Lista_Vazia()){
      return 0;
      }else{
      *Valor=Lista[Tras];
      return 1;
        }
      }
      int Lista_Busca_Valor(int Valor, int *Posicao){
      int i;
      if(Lista_Vazia()){
      return 0;
      }else{
      for(i=Frente;i<Tras;i++){
      if(Lista==Valor){
      break;
        }
      }
      if(i==Tras){
      return 0;
      }else{
      *Posicao=i; 
      return 1;
         }
        }
      }
      int Lista_Busca_Posicao(int *Valor, int Posicao){
      if(Lista_Vazia()){
      return 0;
      }else{
      if(Posicao>Frente && Posicao<Tras){
      *Valor=Lista[Posicao];
      return 1;
      }else{
      return 0;
         }
        }
      }
      int main(){
      int i,Valor,op=0,pos;
      Lista_Construtor();
      while(op!=12){
      printf("*** Menu de opções ***\n");
      printf("1-Inserir início\n");
      printf("2-Inserir fim\n");
      printf("3-Inserir meio\n");
      printf("4-Excluir início\n");
      printf("5-Excluir fim\n");
      printf("6-Excluir meio\n");
      printf("7-Mostrar toda lista\n");
      printf("8-Mostrar primeiro item da lista\n");
      printf("9-Mostrar último item da lista\n");
      printf("10-Mostrar a posição de um item da lista\n");
      printf("11-Mostrar o valor de uma posição\n");
      printf("12-Sair\n");
      printf("Escolha uma opção: ");
      scanf("%d", &op);
      switch(op){
          case 1:
              printf("Digite o valor a ser inserido: ");
              scanf("%d", &Valor);
              Lista_Inserir_Inicio(Valor);
              break;
          case 2:
              printf("Digite o valor a ser inserido: ");
              scanf("%d", &Valor);
              Lista_Inserir_fim(Valor);
              break;
            case 3:
              printf("Digite o valor a ser inserido: ");
              scanf("%d", &Valor);
              printf("Digite a posição que deseja inserir: ");
              scanf("%d", &pos);
              Lista_ Inserir_meio(int Valor, pos); 
              break;
            case 4:
              printf("Digite a remoção do início: ");
              scanf("%d", &*Valor);
              Lista_ Excluir_inicio(*Valor); 
              break;
              case 5:
              printf("Digite a remoção do fim: ");
              scanf("%d", &*Valor);
              Lista_ Excluir_fim(*Valor); 
              break;
              case 6:
              printf("Digite a remoção do meio: ");
              scanf("%d", &Valor);
              printf("Digite a posição que deseja remover: ");
              scanf("%d", &*Posicao);
              Lista_ Excluir_meio(intValor, * pos); 
              break;
               case 7:
              printf("Digite ao a mostrar toda lista: ");
              scanf("%d", &Valor);
              Lista_ mostrar_toda_lista(Valor);
              break;
             case 8:
              printf("Digite ao a mostrar primeiro item da lista: ");
              scanf("%d", &*Valor);
              Lista_ mostrar_primeiro_item_da_lista(*Valor);
              break;
             case 9:
              printf("Digite ao a mostrar último item da lista: ");
              scanf("%d", &*Valor);
              Lista_ mostrar_ultimo_item_da_lista(*Valor);
              break;
              case 10:
              printf("Digite ao a mostrar a posição de um item da lista: ");
              scanf("%d", &Valor);
              printf("Digite a posição que deseja mostrar na lista: ");
              scanf("%d", &* pos);
              Lista_ mostrar_posicao_de_um_item_da_lista(intValor, *pos);
              break;
              case 11:
              printf("Digite ao a mostrar o valor de uma posição: ");
              scanf("%d", &*Valor
              printf("Digite a posição que deseja mostrar no valor: ");
              scanf("%d", &pos);
              Lista_ mostrar_posicao_de_um_valor_da_lista(int*Valor, pos);
              break;
              case 12:
              default:
              printf("Valor Invalido!\n");
              system("PAUSE");
               }
         }
       return 0;
      }
    • Por oromotoceu
      bom dia pode me ajudar nessa questão por favor
      O programa deverá trabalhar dados de um veículo, onde será armazenado, Nome do proprietário, placa do carro, modelo do carro e preço do carro.
      O programa deve ter as seguintes opções:
      Inserir dados (todos os dados sugeridos no enunciado acima).
      Excluir um Carro específico com a busca pela placa.
      Editar dados de um Carro com a busca pela placa.
      Consultar carro por Placa.
      Exibir todos os dados cadastrados.
      Finalizar programa.
      A opção exibir todos os dados, apresenta tudo que já foi cadastrado e está na memória.
       
    • Por TK_T
      olá sou iniciante consegui fazer um o código de um exercício só que quando eu peço o valor 12ab ele lê como numérica alguém pode me ajudar? 
      Exercício: Leia uma string e diga se a mesma é numérica (na base decimal) ou não.
      Ex.: "123" -> numérica
      "abc" -> não numérica
      "12ab" -> não numérica
      "12.34" -> numérica 
      #include <stdio.h> int main() { char Numero; printf("Digite Algo: "); scanf("%c", &Numero); if(Numero == '1' || Numero == '2' || Numero == '3' || Numero == '4' || Numero == '5' || Numero == '6' || Numero == '7' || Numero == '8' || Numero== '9' || Numero == '0') printf("\tNumérica...\n"); else printf("\tNão Numérica\n"); return 0; }  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.