AlissonCiprian0 Postado Abril 11, 2019 Denunciar Share Postado Abril 11, 2019 Boa tarde! Esse é o meu primeiro post aqui, então me desculpem por qualquer erro. Eu estou tentando fazer um programa em C para cadastro de alunos. Basicamente ele precisa cadastrar quantos alunos o usuário quiser (máximo 50) e cada aluno possui uma chave (identificação) e três notas (n1, n2, n3). Até o cadastro, parece que deu tudo certo, mas ocorre um erro estranho quando tento apresentar os alunos. O código é o seguinte: #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <malloc.h> #define MAX 50 //Estrutura de Alunos typedef struct{ int chave; int n1; int n2; int n3; }ALUNO; //Lista dinâmica typedef struct{ ALUNO A[MAX]; int qtdAlunos; }LISTA; //Função para iniciar lista void inicia_sistema(LISTA* li){ li->qtdAlunos = 0; printf("\n\nSistema Iniciado!\nVocê tem %d alunos cadastrados.\n--------------------------------------\n\n", li->qtdAlunos); } //Função para cadastrar alunos int cadastra_aluno(LISTA* li, ALUNO al){ int i = li->qtdAlunos; if(li->qtdAlunos == 0){ li->A[0] = al; return 1; }else{ i++; li->A[i] = al; return 1; } return 0; } //Função para listar alunos void lista_aluno(LISTA* li){ int i; for (i=0; i < li->qtdAlunos; i++){ printf("Aluno %d\n", i); printf("Nota 1: %i\n", li->A[i].n1); printf("Nota 2: %i\n", li->A[i].n2); printf("Nota 3: %i\n\n\n", li->A[i].n3); } } int main(){ setlocale(LC_ALL, "Portuguese"); LISTA* li = (LISTA*) malloc(sizeof(LISTA)); ALUNO al[MAX]; int op, cont, result; do{ printf("Pressione para escolher:\n"); printf("1 - Iniciar Sistema\n"); printf("2 - Cadastrar Aluno\n"); printf("3 - Listar Alunos\n"); printf("0 - Sair\n"); scanf("%d", &op); switch(op){ case 1: inicia_sistema(li); break; case 2: system("cls"); printf("Cadastro de Alunos\n\n--------------------------------------\n\n"); printf("Você tem %d alunos cadastrados.\n", li->qtdAlunos); printf("Nota 1: "); scanf("%d", &al[li->qtdAlunos].n1); printf("Nota 2: "); scanf("%d", &al[li->qtdAlunos].n2); printf("Nota 3: "); scanf("%d", &al[li->qtdAlunos].n3); al[li->qtdAlunos].chave = li->qtdAlunos; result = cadastra_aluno(li, al[li->qtdAlunos]); li->qtdAlunos++; if(result > 0){ printf("Aluno cadastrado!\n"); printf("Você tem %d alunos cadastrados.\n\n", li->qtdAlunos); }else{ printf("Aluno não cadastrado!\n"); printf("Você tem %d alunos cadastrados.\n\n", li->qtdAlunos); } break; case 3: system("cls"); printf("Listar Alunos\n\n--------------------------------------\n\n"); lista_aluno(li); break; } }while(op!=0); } A saída, para um caso de 3 alunos cadastrados, está em anexo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
AlissonCiprian0
Boa tarde! Esse é o meu primeiro post aqui, então me desculpem por qualquer erro.
Eu estou tentando fazer um programa em C para cadastro de alunos.
Basicamente ele precisa cadastrar quantos alunos o usuário quiser (máximo 50) e cada aluno possui uma chave (identificação) e três notas (n1, n2, n3).
Até o cadastro, parece que deu tudo certo, mas ocorre um erro estranho quando tento apresentar os alunos.
O código é o seguinte:
A saída, para um caso de 3 alunos cadastrados, está em anexo.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.