projectos/p1/proj1.c
/*Escreve todos os eventos ativos por ordem cronologica*/
Escreve todos os eventos ativos por ordem cronologica
Escreve todos os eventos ativos por ordem cronologica
void lista_eventos(){
    int i, breaker = 0, sorter[max_sala] = {0,0,0,0,0,0,0,0,0,0}; 
    coordenada next;                                        
    unsigned long int aux1 = 0, aux2 = 0;  
    for(i=0;i<max_sala;i++){
        sort_inroom(i);
        if(sorter[i] == sala[i].total_eventos)
            breaker += 1;
    }
    while(breaker!=10){
        breaker = 0;
        for(i=0;i<max_sala;i++){    
            if(sorter[i]<sala[i].total_eventos){
                next.evendo_id=sorter[i];
                next.room = i;
                break;
            }
        }
        aux1 = sala[next.room].evento[next.evendo_id].abs_time;
        aux2 = sala[next.room].evento[next.evendo_id].tempo;
        for(i=0;i<max_sala;i++){
            if(sorter[i]<sala[i].total_eventos){
                if(aux1 > sala[i].evento[sorter[i]].abs_time){
                        aux1 = sala[i].evento[sorter[i]].abs_time;
                        aux2 = sala[i].evento[sorter[i]].tempo;
                        next.room = i;
                        next.evendo_id = sorter[i];
                }
                else if(aux1 == sala[i].evento[sorter[i]].abs_time){
                    if(aux2 > sala[i].evento[sorter[i]].tempo){
                        aux1 = sala[i].evento[sorter[i]].abs_time;
                        aux2 = sala[i].evento[sorter[i]].tempo;
                        next.room = i;
                        next.evendo_id = sorter[i];
                    }
                }
            }
        }
        lista_evento(next);     
        sorter[next.room]++;    
        for(i=0;i<max_sala;i++)
            if(sorter[i] == sala[i].total_eventos)
                breaker += 1;
    }
}
void lista_eventos ( ) { int i , breaker = 0 , sorter [ max_sala ] = { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ; coordenada next ; unsigned long int aux1 = 0 , aux2 = 0 ; for ( i = 0 ; i < max_sala ; i ++ ) { sort_inroom ( i ) ; if ( sorter [ i ] == sala [ i ] . total_eventos ) breaker += 1 ; } while ( breaker != 10 ) { breaker = 0 ; for ( i = 0 ; i < max_sala ; i ++ ) { if ( sorter [ i ] < sala [ i ] . total_eventos ) { next . evendo_id = sorter [ i ] ; next . room = i ; break ; } } aux1 = sala [ next . room ] . evento [ next . evendo_id ] . abs_time ; aux2 = sala [ next . room ] . evento [ next . evendo_id ] . tempo ; for ( i = 0 ; i < max_sala ; i ++ ) { if ( sorter [ i ] < sala [ i ] . total_eventos ) { if ( aux1 > sala [ i ] . evento [ sorter [ i ] ] . abs_time ) { aux1 = sala [ i ] . evento [ sorter [ i ] ] . abs_time ; aux2 = sala [ i ] . evento [ sorter [ i ] ] . tempo ; next . room = i ; next . evendo_id = sorter [ i ] ; } else if ( aux1 == sala [ i ] . evento [ sorter [ i ] ] . abs_time ) { if ( aux2 > sala [ i ] . evento [ sorter [ i ] ] . tempo ) { aux1 = sala [ i ] . evento [ sorter [ i ] ] . abs_time ; aux2 = sala [ i ] . evento [ sorter [ i ] ] . tempo ; next . room = i ; next . evendo_id = sorter [ i ] ; } } } } lista_evento ( next ) ; sorter [ next . room ] ++ ; for ( i = 0 ; i < max_sala ; i ++ ) if ( sorter [ i ] == sala [ i ] . total_eventos ) breaker += 1 ; } }
Escreve todos os eventos ativos por ordem cronologica
Escreve todos os eventos ativos por ordem cronologica
/*proximo evento de cada sala a ser comparado*/ /*coordenadas do evento de menor tempo nao ordenado*/ /*ordena inicialmente as 10 salas*/ /*testa para ver se existe pelo menos 1 evento*/ /*breaker == 10 quando => 10 salas nao tem mais eventos por ordenar*/ /*seleciona o primeiro evento ativo nao ordenado*/ /*escolhe o menor das 10 salas*/ /*se o dia for menor, atualiza o menor*/ /*se o dia for igual e a hora for menor, atualiza o menor*/ /*imprime o menor*/ /*aumenta o numero de eventos ordenados nesta sala*/ /*testa para ver se ja estao todos ordenados*/