• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

tiaguiar

Duvida com inserir numa matriz ------>URGENTE

6 mensagens neste tópico

Boas pessoal. Estou com um trabalho em mãoes e nao sei como resolver isto e preciso de entregar omesmo amanha  :fartnew2:

o problema é o seguinte:

tenho estas duas estruturas..

struct mat
    {
           char designacao_turma_mat[10];
           char designacao_sala_mat[4];
           char designacao_uc_mat[10];
           char sigla_docente[4];
           char tipo_aula[5];
           int ocupacao;
    };

    struct turma
    {
           char designacao_turma[10];
           int ano_turma;
           int n_alunos;
           struct mat hor[16][6];
    }v_turma[20];

e no fim do programa tenho que guardar dados dentro da matriz hor[16][6] que posteriormente vai ser para depois a imprimir e mostrar um horario. o trabalho consiste em gerar horarios sendo eu a inserir docentes, unidades curriculares, salas e turmas... eu para guardar dentro da matriz estou a fazer da seguinte maneira (ainda sem  qualquer restriçao)

dia()
      {          
               
           int i,j,k,hora,hora1,g; 
              do{  
                system("cls");
                
                
                printf("  \n\t0 - 07H00\n  \t1 - 08H00\n  \t2 - 09H00\n  \t3 - 10H00\n  \t4 - 11H00\n  \t5 - 12H00\n  \t6 - 14H00\n  \t7 - 15H00\n \t8 - 16H00\n  \t9 - 17H00\n \t10 - 18H00\n \t11 - 19H00\n \t12 - 20H00\n \t13 - 21H00\n \t14 - 22H00\n \t15 - 23H00\n");       
                printf("\n\tINTRODUZA HORA DE ENTRADA:");
                scanf("%d",&hora);
                printf("\n\tINTRODUZA HORA DE SAIDA:");
                scanf("%d",&hora1); 
                printf("  \n\t1 - SEGUNDA\n  \t2 - TERCA\n  \t3 - QUARTA\n  \t4 - QUINTA\n  \t5 - SEXTA\n  \t6 - SABADO\n\n");
                printf("\n\tEscolher dia da semana que deseja 1-6: ");
                scanf("%d",&j); 
                                
                                 
                      for(i=hora;i<=hora1-1;i++)
                      {         
                                
                                printf("\n\tINSERIR DESIGNACAO DA TURMA:");
                                fflush(stdin);
                                gets(v_turma[k].hor[i][j].designacao_turma_mat);
                                printf("\n\tINSERIR SIGLA DO DOCENTE:");
                                fflush(stdin);
                                gets(v_turma[k].hor[i][j].sigla_docente);
                                printf("\n\tINSERIR DESIGNACAO DA SALA:");
                                fflush(stdin);
                                gets(v_turma[k].hor[i][j].designacao_sala_mat);
                                printf("\n\tINSERIR DESIGNACAO DA UNIDADE CURRICULAR:");
                                fflush(stdin);
                                gets(v_turma[k].hor[i][j].designacao_uc_mat);
                                printf("\n\tINSERIR TIPO DE AULA:");
                                fflush(stdin);
                                gets(v_turma[k].hor[i][j].tipo_aula);            
                                
                           
                       }
                     
                       printf("se deseja sair selecione 0 senao 1\n");
                       scanf("%d",&g);              
                    }while(g!=0);
             }

o problema que me esta a surgir é que quandodepois de compilar e estar a inserir dados no executavel quando vou para esta funçao e insiro o primeiro campo para depois guardar na matriz o programa bloqueia. Não me deixa inserir nada na matriz. as outras funçoes do programa como inserir remover ordenar listar alterar e pesquisar estao todas a funcionar a 100%.

Se alguem me poder ajudar ficaria muito grato.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quando acedes a v_turma[k], qual é o valor de k?

nao vai ser nenhum.. apenas vai guardar tudo o que meter na matriz dentro do vector. mas nao sei se pode ser assim feito!!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao vai ser nenhum.. apenas vai guardar tudo o que meter na matriz dentro do vector. mas nao sei se pode ser assim feito!!

Tu estás a aceder à posição k do vector, mas a variável k não foi inicializada dentro da função.

Como tu queres adicionar ao vector de turmas, uma ideia seria teres uma estrutura que tenha o vector v_turma e o numero de turmas que já estão preenchidas.

struct turmas{
   struct turma[] t;
   int n;
}TURMAS;

Assim qdo vais adicionar uma turma fazes algo do género:

gets(turmas.v_turma[turmas.n].hor[ i ][j].designacao_turma_mat);

Sei que a ideia está um pouco embrulhada, mas é apenas uma ideia.

AH e sempre que adicionas uma turma, incrementas o turmas.n

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

struct turmas{
   struct turma[] t;
   int n;
}TURMAS;

acho uma boa ideia para fazer isto mas o t que tens em   struct turma[] t; é para fazr passagem por referencia???

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

struct turmas{

  struct turma[] t;

  int n;

}TURMAS;

acho uma boa ideia para fazer isto mas o t que tens em  struct turma[] t; é para fazr passagem por referencia???

Acho que isso fica ao teu critério :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora