Untitled

                Never    
C
       
//no main.c
if(sscanf(variavel,"%d-%d-%d", &dia, &mes, &ano)==3){
        if(dataValida(dia, mes, ano)){
                listaPorData(a,variavel,email);
        }
        else printf("Data invalida.\n");
        return;
}
//no app.c 
void listaPorData(app a, char * data,char * email){
    iterador it1;//iterador de utilizadores
    int flag = 0;
    //int i = tamanhoDicOrdenado(a->utilizadores);
    it1= iteradorDicOrdenado(a->utilizadores);
    while(temSeguinteIterador(it1)){
            utilizador u = (utilizador) seguinteIterador(it1);
            flag = listaPorDataUtilizador(u,data);
    }
    if (!flag)
        printf("%s nao existem deslocacoes registadas para %s\n", nomeUtilizador(a, email),data);
}
//no utilizador.c
int listaPorDataUtilizador(utilizador u, char* data){
    iterador it; //iterador de chaves
    deslocacao d;
    int flag=0;
    //int i = tamanhoDicOrdenado(u->viagens);
    it = iteradorChaveDicOrdenado(u->viagens);

    if(it!=NULL){//verificar se iterador foi criado
            while(temSeguinteIterador(it)){
                d = (deslocacao) seguinteIterador(it);
                if(!strcmp(data,retornaData(d))){
                    flag=1; //previne o printf de que nao ha viagens na data
                    printf("%s\n",retornaOrigem(d));
                    printf("%s\n",retornaDestino(d));
                    printf("%s %s %d %d\n",retornaData(d),retornaHoras(d),retornaDuracao(d),retornaLugares(d));
                    printf("Lugares vagos: %d\n",retornaLugares(d)/*-tamanhoSequencia()*/);
                    printf("Sem boleias registadas.\n");
                }
            }
            destroiIterador(it);
    }
    return flag;

}

Raw Text