0
I’m doing a student registration program:
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
/*Elabore um programa em linguagem C, que seja capaz registrar um conjunto de dados de uma turma de programação de computadores em memória RAM.
Esta turma possui no máximo 20 alunos.
Cada aluno é representado por uma struct, que é composta por matrícula, nome, nota 1, nota 2 e média.
O conjunto de alunos da turma deve ser estruturado na memória RAM através de um vetor, que será manipulado através das operações
"Incluir aluno", "Excluir aluno", "Consultar aluno", "Listar alunos da turma". Além destas opções, que comporão um menu, também é necessária uma opção para finalizar o programa.*/
typedef struct{
int matricula;
char nome [100];
float n1,n2,media;
}dadosaluno[20];
void incluir(void);
void exlcuir(void);
void consultar(void);
void listar(void);
int main(void){
int i,aux,media;
char opcao;
printf("|=============================================|\n");
printf("|SELECIONE UMA OPCAO|\n");
printf("A->INCLUIR ALUNOS\n");
printf("B->EXCLUIR ALUNOS\n");
printf("C->CONSULTAR ALUNOS\n");
printf("D->LISTAR ALUNOS\n");
printf("E->ENCERRAR O PROGRAMA\n");
printf("|=============================================|");
printf("\nInforme uma opcao(A,B,C,D,E): ");
opcao = getch();
switch(opcao){
case 'A':
case 'a':
incluir();
break;
case 'B':
case 'b':
excluir();
break;
case 'C':
case 'c':
consultar();
break;
case 'D':
case 'd':
listar();
break;
case 'E':
case 'e':
printf("\n\n*PROGRAMA ENCERRADO*\n\n");
break;
default:
printf("\n\n*ESCOLHEU OPCAO INVALIDA*\n\n");
break;
}
return 0;
}
void incluir(void){
int i,media = 0,n1 = 0,n2 = 0;
for(i=0;i<20;i++){
printf("\n\nInsira a matricula do aluno: ");
scanf("%d",&dadosaluno[i].matricula);
printf("Insira o nome do aluno: ");
scanf(" %[^\n]s",&dadosaluno[i].nome);
printf("Insira a nota 1 do aluno: ");
scanf("%f",&dadosaluno[i].n1);
printf("Insira a nota 2 do aluno: ");
scanf("%f",&dadosaluno[i].n2);
media = (n1 + n2)/2;
dadosaluno[i].media = media;
}
}
void excluir(void){
int i,aux;
printf("Digite a matricula do aluno que deseja excluir: ");
scanf("%d",&aux);
for(i=0;i<20;i++){
if(aux == dadosaluno.matricula[i]){
memset(&dadosaluno[i].nome,0,sizeof(dadosaluno[i].nome));
memset(&dadosalun[i].n1,0,sizeof(dadosaluno[i].n1));
memset(&dadosaluno[i].n2,0,sizeof(dadosaluno[i].n2));
memset(&dadosaluno[i].media,0,sizeof(dadosaluno[i].media));
memset(&dadosaluno[i].matricula,0,sizeof(dadosaluno[i].matricula));
}
}
}
void consultar(void){
int i,aux;
printf("Digite a matricula do aluno que deseja consultar: ");
scanf("%d",&aux);
for(i=0;i<20;i++){
if(aux == dadosaluno.matricula[i]){
printf("Matricula do aluno: %d\n",dadosaluno[i].matricula);
printf("Nome do aluno: %s\n",dadosaluno[i].nome);
printf("Nota 1 do aluno: %.2f\n",dadosaluno[i].n1);
printf("Nota 2 do aluno: %.2f\n",dadosaluno[i].n2);
printf("Media do aluno: %.2f\n",dadosaluno[i].media);
}
}
}
void listar(void){
int i,;
for(i=0;i<20;i++){
printf("Matricula do aluno: %d\n",dadosaluno[i].matricula);
printf("Nome do aluno: %s\n",dadosaluno[i].nome);
printf("Nota 1 do aluno: %.2f\n",dadosaluno[i].n1);
printf("Nota 2 do aluno: %.2f\n",dadosaluno[i].n2);
printf("Media do aluno: %.2f\n",dadosaluno[i].media);
}
}
but the program is returning the error:
error: expected Expression before 'dadosaluno'
Did you check which line is the bug on? The compiler usually tells you the line in which the error occurred. I noticed that you used
dadosaluno.matricula[i]
instead ofdadosaluno[i].matricula
twice.– user131290