Galera, bom dia!
Preciso da ajuda de vocês aqui, vou explicar o contexto:
Eu preciso que meu código seja capaz de cadastrar os cursos de uma universidade. E para cada curso, exista a possibilidade de cadastrar 10 propostas (no máximo). Para cada proposta o usuário deve informar o TÍTULO, DATA, HORÁRIO, TIPO e PROPONENTES (no máximo 5, que podem ser tanto alunos como professores). Sendo que para um mesmo curso, não pode existir mais de uma propostas cadastrada.
No final, tem que ser exibido todas as propostas de cada curso, de uma forma organizada. O que eu preciso fazer?
Por enquanto meu código está assim:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <locale.h>
struct propostas
{
char titulo[200];
char data[200];
char horario[200];
char tipoDeApres[200];
int cod;
}logP[10];
struct responsaveis
{
char proponentes[200];
}logR[5];
struct cursosUniv
{
char cursos[200];
struct propostas realizar;
struct responsaveis componentes;
}log[27];
//typedef struct cursosUEFS log;
//Declaração das funções a serem utilizadas
int menu_por_area(); //Função do menu por área de conhecimento
int sub_menu(char tabela_de_cursos[][200], int menor, int maior, int j); //Função que exibe o sub menu das Áreas de Conhecimento
void EscolhaData(int a, char data[][11]); //Função que guarda a data escolhida pelo usuário
void EscolhaHorario(int a, char tabela_de_horarios[][200]); //Função que guarda o horário escolhido pelo usuário
void EscolhaTipo(int a, char tipoDeApres[][12]); //Função que guarda o tipo de apresentação escolhido pelo usuário
void EscolhaTitulo(int a); //Função que guarda o título da proposta digitado pelo usuário
int main(){
setlocale(LC_ALL, "Portuguese"); //Função da biblioteca <locale.h> que permite suporte a língua portuguesa
char tabela_de_horarios[18][200] = {"8:00Hs às 9:00Hs","9:00Hs às 10:00Hs","10:00Hs às 11:00Hs", "11:00Hs às 12:00Hs", "13:00Hs às 14:00Hs","14:00Hs às 15:00Hs", "15:00Hs às 16:00Hs", "16:00Hs às 17:00Hs", "18:00Hs às 19:00Hs", "19:00Hs às 20:00Hs"}; //matriz com os horários disponíveis para apresentação
char data[2][11]={"23/10/2017", "24/10/2017"}; //Matriz com as datas disponíveis para apesentação
char tipoDeApres[4][12]={"ORAL", "OFICINA", "PÔSTER", "LABORATÓRIO"}; //Matriz com os tipos de apresentação da proposta
char tabela_de_cursos[28][200] = {"Lic. em Letras com Francês", "Lic. em Letras com Inglês", "Lic. em Letras Vernáculas", "Lic. em Letras: Português e Espanhol", "Lic. em Música", "Administração", "Ciências Contábeis", "Ciências Econômicas", "Direito", "Lic. e Bach. em Filosofia", "Lic. e Bach. em Geografia", "Lic. em História", "Lic. em Pedagogia", "Psicologia", "Engenharia Civil", "Engenharia de Alimentos", "Engenharia de Computação", "Lic. em Química", "Lic. e Bach. em Física", "Lic. em Matemática", "Agronomia", "Bach. em Ciências Biológicas","Enfermagem","Farmácia","Lic. em Ciências Biológicas","Lic. em Educação Física","Medicina","Odontologia"};
int cod, cods = 0; //Varíavel que guarda o número correspondente a escolha do usuário ao curso
int i,j=0, es, apr, hora, a=0, opcao;
//struct cursosUniv log[27];
do{
cod = menu_por_area(); // variável recebe retorno da função Menu por Área de Conhecimento
//Neste bloco o usuário é direcionado para o sub menu dos cursos da área de conhecimento escolhida
if(cod==1){
cods = sub_menu(tabela_de_cursos, 0, 4, j);
}
else if(cod==2){
cods = sub_menu(tabela_de_cursos, 5, 13, j);
}
else if(cod==3){
cods = sub_menu(tabela_de_cursos, 13, 19, j);
}
else if(cod==4){
cods = sub_menu(tabela_de_cursos, 20, 26, j);
}
//Fim das condições de escolha do menu cursos
//Criar uma condição de repetição para sair do curso cadastrado e escolher outro, voltando para o menu inicial
EscolhaData(a, data);
//Aqui jaz a parte em guarda a data da proposta
EscolhaHorario(a, tabela_de_horarios);
//Aqui jaz a escolha de horários
EscolhaTipo(a, tipoDeApres);
//Aqui jaz a escolha do tipo de apresentação
EscolhaTitulo(a);
//Aqui jaz a escolha do título da proposta
printf("Cadastrar novamente? 1-NÃO / 2-SIM");
scanf("%d", &opcao);
system("cls");
a++;
j++;
}while(opcao==2);
system("cls");
for(j=0; j<=1; j++){
if(log[j].cursos!=""){
printf("CURSO cadastrado = %s\n", log[j].cursos);
}
for(a=0; a<=1; a++){
printf("TÍTULO da PROPOSTA = %s\n", log[a].realizar.titulo);
printf("DATA = %s\n", log[a].realizar.data);
printf("HORÁRIO = %s\n", log[a].realizar.horario);
printf("TIPO = %s\n", log[a].realizar.tipoDeApres);
}
}
system("pause");
//printf("Deseja continuar cadastradando?");
//scanf("%d", &escolha);
//}while(escolha==1);
return 1;
} //FIM DA MAIN
int menu_por_area(){
int cod;
//Início do menu das áreas de conhecimento
printf("\t\t||||||||||||1º FEIRA DE GRADUAÇÃO|||||||||||||||\n");
printf("\t|||||UNIVERSIDADE ESTUADUAL DE FEIRA DE SANTANA - UEFS|||||\n");
printf("\n<1> - LETRAS E ARTES\n<2> - CIÊNCIAS HUMANAS E FILOSOFIA\n<3> - TECNOLOGIA E CIÊNCIAS EXATAS\n<4> - CIÊNCIAS NATURAIS E DA SAÚDE\n");
scanf("%d", &cod);
system("cls");
return (cod);
}
int sub_menu(char tabela_de_cursos[][200], int menor, int maior, int j){
int i, cods;
for(i=menor;i<=maior;i++){
printf("<%d> - %s\n",i, tabela_de_cursos[i]);
}
printf("Selecione sua opção:\n");
scanf("%d", &cods);
//verificar se já cadastraram o curso escolhido
/*int verificacao(char tabela_de_cursos[][200]){
int cont = 0;
while ( cont <= 27)
{
if ( log[cont].cursos == tabela_de_cursos[cods]){
return cont;
}
cont++;
}
return(1);
} */
strcpy(log[j].cursos, tabela_de_cursos[cods]);
tabela_de_cursos[cods]
j++; //era um j aqui
return cods;
}
void EscolhaData(int a, char data[][11]){
int i, j;
system("cls");
printf("Faça o cadastro da sua proposta!\n");
printf("Data de Apresentações:\n");
for(i=0;i<=1;i++){
printf("<%d> - %s\n", i, data[i]);
}
printf("Escolha sua opção:\n");
scanf("%d", &j);
strcpy(log[a].realizar.data, data[j]);
a++;
}
void EscolhaHorario(int a, char tabela_de_horarios[][200]){
int i, hora;
system("cls");
printf("Horários das Propostas:\n");
for(i=0;i<=9;i++){
printf("<%d> - %s\n", i, tabela_de_horarios[i]);
}
printf("Escolha sua opção:\n");
scanf("%d", &hora);
strcpy(log[a].realizar.horario, tabela_de_horarios[hora]);
}
void EscolhaTipo(int a, char tipoDeApres[][12]){
int i, es;
system("cls");
printf("Tipos das Propostas:\n");
for(i=0;i<=3;i++){
printf("<%d> - %s\n", i, tipoDeApres[i]);
}
printf("Escolha sua opção:\n");
scanf("%d", &es);
strcpy(log[a].realizar.tipoDeApres, tipoDeApres[es]);
}
void EscolhaTitulo(int a){
system("cls");
printf("Digite o título da proposta: ");
fflush(stdin);
gets(log[a].realizar.titulo);
}