Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Émylle Andressa

C Structs em C (como ordenar vários registros)

Recommended Posts

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);
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Émylle Andressa Seu código precisa de uma organizada, tente focar nas etapas e como simplifica-las. Um código organizado e limpo sempre vai ser bem reconhecido. Enfim, segue algumas etapas para você começar:

 

1 - Determinar como vai ser armazenado/cadastrado/acessado:

     a - cursos

     b - propostas

 

Dica: não misture struct's com vetores, escolha apenas um. Já que você apenas precisa cadastrar cursos, talvez até remover.

 

2 - Criar 'menu principal' em duas fases:

     a - Cadastro de Cursos

     b - Cadastro de Propostas

 

3 - Criar função para cadastrar cursos.

Dica: Use struct, pois você poderá acrescentar mais informações sobre o curso.

 

4 - Criar função para cadastrar propostas.

Dica: Primeiro peça ao usuário a quantidade de propostas, depois use do...while.

 

Se você seguir essas etapas você vai conseguir entender melhor como proceder.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×