/* 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);
}
Esempio n. 2
0
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;
}