-2
Good afternoon guys! How are you?
I’m learning codar in C as part of a college course. In the current exercise, we were asked to generate a simple program for inserting/removing records. I relied on the proposed exercises as well as the subject of the discipline to generate my code, but when trying to compile the error "[Error]: Id returned 1 Exit status" always occurs. I can not see any other apparent error (debugged many of them), but the cited error persists. Below follows the source code:
//Bibliotecas inicializadas:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
//Constantes utilizadas:
#define size 5 // Tamanho máximo definido como 5 (cinco posições na fila)
//Corpo do Elemento:
struct item{
int student_RA; //Declarar Número da Carteirinha do Estudante
char fileName[50]; //Declarar Nome do Arquivo
char fileExtension[6]; //Declarar Extensão do Arquivo
int professorRegistration; //Declarar o Número de Matrícula do professor
};
//Corpo da Fila:
struct queueBody{
struct item data[size]; //Declarar estrutura (registro) dos dados de cada posição
int firstElement; //Declarar posição do primeiro elemento. Será usado para inicializar a fila
int lastElement; //Declarar posição do último elemento. Será usado para salvar a posição do item inserido por último.
};
//Variáveis de escopo global:
struct queueBody queue;
int op;
//Protipação:
void showMenu(); //Declarar função que irá mostrar o Menu Inicial
void queue_newItem(); //Declarar função que adiciona novo item
void queue_removeItem(); //Declarar função que remove um item existente
void queue_clearQueue(); //Declarar função que limpa a fila
void queue_showQueue(); //Declarar função que mostra a fila existente
void queue_exitProgram(); //Declarar função que sai do programa
//Função Principal:
int main(){
setlocale (LC_ALL, "Portuguese");
op = 1;
queue.firstElement = 0;
queue.lastElement = 0;
while (op != 0){
system("cls"); // Limpar a tela
queue_showQueue();
showMenu();
scanf("%d", &op);
switch (op){
case 1:
queue_newItem();
break;
case 2:
queue_removeItem();
break;
case 3:
queue_clearQueue();
break;
}
}
return(0);
queue_exitProgram();
}
//Função 'newItem': entrar novo dado na fila na última posição em aberto
void queue_showItem(){
if(queue.lastElement == size-1){
printf("\nA fila atingiu seu limite. Por favor, tente novamente mais tarde:\n\nNúmero de elementos: " + queue.lastElement);
system("pause");
}
else{
printf("\nDigite o Código da Carteira de Estudante:");
scanf("%d", &queue.data[queue.lastElement].student_RA);
printf("\nDigite o Nome do Arquivo:");
scanf("%s", &queue.data[queue.lastElement].fileName);
printf("\nDigite a Extensão do Arquivo:");
scanf("%s", &queue.data[queue.lastElement].fileExtension);
printf("\nDigite a Matrícula do Professor:");
scanf("%d", &queue.data[queue.lastElement].professorRegistration);
queue.lastElement++;
}
}
//Função 'removeItem': remover o item na primeira posição da fila
void queue_removeItem(){
if(queue.firstElement == queue.lastElement){
printf("\n A fila está vazia! Não há o que remover. Retornando ao Menu Inicial.");
system("pause");
}
else{
int pos;
for (pos = 0; pos < size; pos++){
queue.data[pos].student_RA = queue.data[pos+1].student_RA; //mover o dado 'Código de Carteirinha' uma posição acima
strcpy(queue.data[pos].fileName, queue.data[pos+1].fileName); //mover o dado 'Nome do Arquivo' uma posição acima
strcpy(queue.data[pos].fileExtension, queue.data[pos+1].fileExtension); //mover o dado 'Extensão do Arquivo' uma posição acima
queue.data[pos].professorRegistration = queue.data[pos+1].professorRegistration; //mover o dado 'Matrícula do Professor' uma posição acima
}
queue.data[queue.lastElement].student_RA = 0; //limpar dados da última posição, após mover a fila uma posição acima
strcpy(queue.data[queue.lastElement].fileName, "");
strcpy(queue.data[queue.lastElement].fileExtension, "");
queue.data[queue.lastElement].professorRegistration = 0;
queue.lastElement--; // Decrescer uma unidade da posição final
}
}
//Função 'clearQueue': limpar TODAS AS POSIÇÕES OCUPADAS da fila
void queue_clearQueue(){
int pos;
for(pos = 0; pos <= queue.lastElement; pos++){
queue.data[queue.lastElement].student_RA = 0;
strcpy(queue.data[queue.lastElement].fileName, "");
strcpy(queue.data[queue.lastElement].fileExtension, "");
queue.data[queue.lastElement].professorRegistration = 0;
}
}
//Função 'showQueue': mostra todos os elementos na fila e seus atributos
void queue_showQueue(){
int pos;
for(pos = 0; pos < queue.lastElement; pos++){
printf("\nÍndice de Processamento: " + pos+1);
printf("\nCódigo da Carteira: " + queue.data[pos].student_RA);
printf("\nNome do Arquivo: %s", queue.data[pos].fileName);
printf("\nExtensão do Arquivo: %s", queue.data[pos].fileExtension);
printf("\nMatrícula do Professor: " + queue.data[pos].professorRegistration);
printf("\n ------------------------- \n");
}
}
//Função 'showMenu': mostra as opções de navegação do menu para acionar as demais funções
void queue_showMenu(){
printf("Bem-vindo ao sistema de filas. Por favor, selecione uma opção:\n");
printf("1 - Inserir Novo Item\n");
printf("2 - Remover Última Item Adicionado\n");
printf("3 - Remover Todos os Itens Existentes");
printf("0 - Sair do Programa");
}
//Função 'exitProgram': imprime na tela uma mensagem de deslogamento quando o usuário escolhe sair do programa.
void queue_exitProgram(){
printf("Obrigado por utilizar o sistema de filas. Volte sempre!");
}
Any idea what might be going on? Any help is welcome. Thank you very much right now!
Leonardo.