Estou cursando Análise e Desenvolvimento de Sistemas e estamos entrando na parte de funções e ponteiros na linguagem C.
A professora passou o seguinte exercício:
1)Crie uma struct para armazenar os dados (nome, idade, posição, numero_camisa) dos jogadores de vôlei de um time. Crie duas estruturas para armazenar os jogadores principais e os reservas. Desenvolva um programa em que o usuário consiga entrar com os jogadores principais (seis) e reservas(4) e mostre-os na tela. Para facilitar a entrada de dados, utilize um menu.
Estou utilizando o Dev C++, fiz o código que vou postar abaixo. Ele compilou, mas na hora que seleciono uma opção do menu, ele da erro no compilador e fecha.
Poderiam me dar uma forcinha e dizer o que está acontecendo? Se tiverem dicas para melhorar o código também, serei toda ouvidos.
Tenho uma dúvida também, no caso se eu quiser salvar estes dados em um txt e consultar esses dados dps, como faço?
Segue o código:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
struct timeprincipal
{
char nome[20], cidade[15], posicao[30];
int ncamisa;
};
struct jogreserva
{
char nome[20], cidade[15], posicao[30];
int ncamisa;
};
int main(int argc, char *argv[])
{
setlocale (LC_ALL, "PORTUGUESE");
int i, op;
void cadastroPrincipal();
void cadastroReserva();
void mostraPrincipal();
void mostraReserva();
int menu();
while ((op = menu()) != 4)
{
switch (op)
{
case 1:
cadastroPrincipal();
break;
case 2:
cadastroReserva();
break;
case 3:
mostraPrincipal();
break;
case 4:
mostraReserva();
break;
case 5:
break;
default:
printf ("Opção inválida. Tente novamente! ");
scanf ("%d", &op);
}
}
system("PAUSE");
return 0;
}
int menu ()
{
int opções;
system ("cls");
printf ("Escolha a opção desejada:\n");
printf ("a) Digite [1] para cadastrar jogadores do time principal.\n");
printf ("b) Digite [2] para cadastrar jogadores da reserva.\n");
printf ("c) Digite [3] para listar jogadores do time principal cadastrados.\n");
printf ("d) Digite [4] para listar jogadores reservas cadastrados.\n");
printf ("e) Digite [5] para sair.\n");
scanf ("%d", opções);
return opções;
}
void cadastroPrincipal ()
{
struct timeprincipal jogprin[6];
int i;
printf ("CADASTRO DO TIME PRINCIPAL\n");
for (i=0 ; i<6 ; i++)
{
printf ("Digite o nome do jogador: ");
fflush (stdin);
gets (jogprin[i].nome);
printf ("\nDigite a cidade do jogador: ");
fflush (stdin);
gets (jogprin[i].cidade);
printf ("\nQual a posição do jogador? ");
fflush (stdin);
gets (jogprin[i].posicao);
printf ("Digite o número da camisa do jogador: ");
scanf ("%d", &jogprin[i].ncamisa);
system ("cls");
}
}
void cadastroReserva ()
{
struct jogreserva reservas[4];
int i;
printf ("CADASTRO DE JOGADORES DA RESERVA\n");
for (i=0 ; i<4 ; i++)
{
printf ("Digite o nome do jogador: ");
fflush (stdin);
gets (reservas[i].nome);
printf ("\nDigite a cidade do jogador: ");
fflush (stdin);
gets (reservas[i].cidade);
printf ("\nQual a posição do jogador? ");
fflush (stdin);
gets (reservas[i].posicao);
printf ("Digite o número da camisa do jogador: ");
scanf ("%d", &reservas[i].ncamisa);
system ("cls");
}
}
void mostraPrincipal()
{
int i;
struct timeprincipal jogprin[6];
printf ("LISTA DE JOGADORES CONVOCADOS TIME PRINCIPAL\n");
for (i=0 ; i<6 ; i++)
{
printf ("\nNome: %s", jogprin[i].nome);
printf ("\nCidade: %s", jogprin[i].cidade);
printf ("\nPosição: %s", jogprin[i].posicao);
printf ("\nNº da camisa: %d", jogprin[i].ncamisa);
}
}
void mostraReserva()
{
int i;
struct jogreserva reservas[4];
printf ("LISTA DE JOGADORES RESERVA\n");
for (i=0 ; i<4 ; i++)
{
printf ("\nNome: %s", reservas[i].nome);
printf ("\nCidade: %s", reservas[i].cidade);
printf ("\nPosição: %s", reservas[i].posicao);
printf ("\nNº da camisa: %d", reservas[i].ncamisa);
}
}