/* funcao que imprime a listagem dos livros requisitados em atraso (mais de 7 dias) */ void livros_atraso(Requisit requisit,Livro livros,Utente utentes) { int i=0,comp,j,pass,trocou = 1; Requisit aux,temp,*enderecos; Livro aux_l; Utente aux_u; enderecos = (Requisit*)malloc(sizeof(No_requisit)); aux = requisit->prox; while(aux) { if(sete_dias(aux->info.data_r)==1) { *(enderecos+i)=&(*aux); i++; enderecos = (Requisit*)realloc(enderecos,(i+1)*sizeof(No_requisit)); } aux=aux->prox; } for (pass=0; pass<i-1 && trocou; pass++) /* metodo de bubble sort para ordenar o vector de enderecos*/ { trocou = 0; for (j = 0; j < i-pass-1; j++) { comp=compara_data(enderecos[j]->info.data_r,enderecos[j+1]->info.data_r); if (comp==1) { trocou = 1; temp = enderecos[j]; enderecos[j] = enderecos[j+1]; enderecos[j+1] = temp; } } } clear(); printf("\n\n\n\tOs livros em atraso (mais de 7 dias) sao os seguintes:\n\n"); printf("+--------------------------------------------------------------------------------------------------------------------------+\n"); printf("|C.Livro| Nome do Livro |Data Requisic |C.Utente| Nome Utente |\n"); printf("+--------------------------------------------------------------------------------------------------------------------------+\n"); for(j=0;j<i;j++) { aux_l = pesquisa_lista_l(livros,enderecos[j]->info.cod_livro); aux_u = pesquisa_lista_u(utentes,enderecos[j]->info.cod_utente); printf("%6d %-58s %02d/%02d/%-7d %-5d %-27s\n\n",enderecos[j]->info.cod_livro,aux_l->dados.nome,enderecos[j]->info.data_r.dia,enderecos[j]->info.data_r.mes,enderecos[j]->info.data_r.ano,enderecos[j]->info.cod_utente,aux_u->registo.nome); } printf("+--------------------------------------------------------------------------------------------------------------------------+\n\n\n"); free(enderecos); }
double montante_diario_usado(lista_t *operacoes, conta_t *conta, operacao_tipo_t tipo) { char *data = get_time(); double soma = 0.0; lista_t *item; operacao_t *operacao; item = operacoes; while (!lista_vazia(item)) { operacao = (operacao_t*)item->dado; if ((operacao->tipo == tipo) && (operacao->conta_numero == conta->numero)) { if (compara_data(data, operacao->data)) { soma += operacao->montante; } } item = item->prox; } return soma; }