Ir ao conteúdo
  • Cadastre-se
Igor Vargas

C Grade de matérias com struct

Recommended Posts

Eai galera preciso entregar um trabalho quinta feira e não estou conseguindo concluir essa parte.

 

Ao associar um aluno a uma disciplina, verificar se os blocos de horário necessários estão disponíveis na grade do aluno, se sim, associar a disciplina, senão mostrar uma mensagem informando o conflito. Por exemplo, se o aluno já estiver associado a uma disciplina que ocorre na terça as 13, não será possível adicionar outra disciplina que ocorre no mesmo dia e horário.

 

Da maneira que eu fiz você escolhe a disciplina e ela será adicionada a grade. Mas ela esta funcionando apenas para um aluno, ou seja, quando eu adiciono outro aluno a disciplina anterior continua lá. Me falaram que seria mais fácil adicionar a disciplina direto a grade e depois verificar a questão do horário. Abaixo tem como deve ficar na hora de printar;

 

 

 

                    Segunda       Terça     Quarta         Quinta     sexta

08:00             127                -                -                     -              -

10:00              -                     -                -                      -             -

13:00              -                   127          -                       -             -

 15:00             -                      -          135                   -                -

         

   

 

int add_Aluno(struct registro al[3], struct disciplinas add_Dis[5], struct registro grade_T[4][5]){
    int dis,x,y,guarda[5],cont=0,num,a,b,i,salva,retorna;
    char resp;
    int volta,j,contador=0;
    printf("\n\n");
    printf("--------------------------------------\n");
    printf("---voce selecionou adicionar aluno.---\n");
    printf("--------------------------------------\n");
    printf("    Lista de Disciplinas\n");
    printf("    Codigo    Nome\n\n");
    printf("\n");
    
    do{
        int yy=1;
        printf("Digite seu nome:");
        fflush(stdin);                                                /*//Funcão de Cadastro do aluno*/
        gets(al[cont].nome);
        printf("Digite seu Sobrenome:");
        gets(al[cont].sobrenome);
        strcat(al[cont].nome, al[cont].sobrenome);
        printf("Digite sua Matricula:");
        scanf("%d",&al[cont].matricula);
        cont++;
		
        printf("Digite seu e-mail:");
        fflush(stdin);
        gets(al[i].email);
        for (i = 0; i < strlen(al[i].email); i++) {				//Verifica se o email digitado é valido ou não
        if (al[i].email == '@' && al[i].email=='.') {
        	salva=1;
    }
}
       
	   
        do{
        volta=1;
        printf("Digite em quantas materias deseja se matricular:");
        scanf("%d",&num);
        printf("Digite o codigo das diciplinas que voce deseja se matricular\n");
        for(y=0; y<num; y++){
        scanf("%d",&al[y].l_Disciplinas);
    }
        for(x=0; x<num; x++){
           
         for(j=0;j<num;j++){
        if((al[x].l_Disciplinas == 127 && al[j].l_Disciplinas == 132 && j != x )|| al[x].l_Disciplinas ==135 && al[j].l_Disciplinas == 143)
    {
        printf("voce não pode se inscrever em duas disciplas de mesmo horario\n");
        volta=0;
        al[x].l_Disciplinas=0;
        break;
    }

            else if(al[x].l_Disciplinas==122)
            {
               grade_T[0][0].grade[0][0]=122;
               grade_T[1][1].grade[1][1]=122;
            }
                else if(al[x].l_Disciplinas==127)
            {
                grade_T[2][1].grade[2][1]=127;
                grade_T[4][2].grade[4][2]=127;
                   
            }

                else if(al[x].l_Disciplinas==132)
            {
                grade_T[2][1].grade[1][3]=132;
                grade_T[2][1].grade[1][3]=132;
            }

                else if(al[x].l_Disciplinas==143)
            {
                grade_T[1][4].grade[1][4]=143;
            }
   
   
                else if(al[x].l_Disciplinas==145)
            {
                grade_T[1][2].grade[1][2]=145;
                grade_T[1][4].grade[1][4]=135;
            }   



}


}
                   
           
}while(volta != 1 );       
  printf("Deseja Cadastrar outro aluno? s/n:");
    fflush(stdin);
    scanf("%c",&resp);
}while(resp != 'n');
    
       
       
        }
   

 

 

 

A função abaixo é onde eu mostro a grade.

 

 

void consulta(struct registro al_C[3],struct disciplinas dis[5], struct registro grade_T[4][5]){
    int x=0,escolhe,a,b,y;
    char nome[20];
    char salva[3];
    int cont_L=0;
    int teste[3];
    char resp;
    int matricula_N,salva_V;
    char string[3];
    char horas[20];
   
    strcpy(dis[0].h_Semanal,"08:00");
    strcpy(dis[1].h_Semanal,"10:00");
    strcpy(dis[2].h_Semanal,"13:00");
    strcpy(dis[3].h_Semanal,"15:00");
    printf("\n\n");
    printf("--------------------------------------\n");
    printf("---voce selecionou Consultar aluno.---\n");
    printf("--------------------------------------\n");
    printf("1.Pesquisa por Nome\n");
    printf("2.Pesquisa por Matricula\n");
    fflush(stdin);
    scanf("%d",&escolhe);
    if(escolhe ==1){
    printf("Digite o nome do aluno:");
    fflush(stdin);
    gets(nome);
   
    for(x=0; x<strlen(nome); x++){
    if (nome[x] == al_C[x].nome && nome[x + 1] == al_C[x + 1].nome && nome[x + 2] == al_C[x + 2].nome)  //nessa linha são comparadas as 3 letras
        salva_V=1;   
           
       
    }
   
   
   
    for(x=0; x<4; x++){
        if(strcmp(al_C[x].nome, nome)==0){
            salva_V=1;
        }
    }
}



        else if(escolhe == 2)
        {
        printf("Digite a Matricula do aluno:");
        fflush(stdin);
        scanf("%d",&matricula_N);
        for(x=0; x<4; x++)
    {
          if(al_C[x].matricula == matricula_N ){
          /*//compara as duas matricular se são iguais se for ele printa a grade do aluno*/
          salva_V=1;
          }
          }
        }
        if(salva_V == 1){
            printf("            Segunda  Terca  Quarta  Quinta  Sexta\n");
            for(a=0; a<4; a++){
            printf("%s",dis[a].h_Semanal);	
              for(b=0; b<5; b++){
              if(grade_T[a][b].grade[a][b]==127 || grade_T[a][b].grade[a][b]==122 || grade_T[a][b].grade[a][b]==135 || grade_T[a][b].grade[a][b]==132 ||grade_T[a][b].grade[a][b]==143){
                    printf("   ");
                    printf("[%d]", grade_T[a][b].grade[a][b]);
                               
            }else{
                printf("   ");
                   printf("[---]");   
            }
           
            }
           
        printf("\n");
        }
       
       
        }
       
        }

 

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

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





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

×