typedef struct{ int numero; // número de fatura (chave): {1000, …, 2000 } int NIF; // número de contribuinte: { 123450, ..., 123460 } int dia; // dia de compra int mes; // mês de compra int ano; // ano de compra: { 2020, ..., 2024 } float valor; // valor a pagar na fatura (em euros): [1.0, 500.0] }INFOLista; /* ------------------------------------------------------- */ /* ---- protótipos/headers das funções da biblioteca ----- */ /* ------------------------------------------------------- */ // mostra um dado elemento do tipo INFOLista void mostrarElementoLista(INFOLista); // constrói e devolve um elemento do tipo INFOLista, // usando valores gerados aleatoriamente INFOLista criarElementoLista(); // dados dois elementos do tipo INFOLista, compara-os // segundo o campo "chave" (numero), devolvendo: // -1 (primeiro < segundo), 0 (iguais), 1 (primeiro > segundo) int compararElementosLista(INFOLista, INFOLista); /* ------------------------------------------------------- */ /* -------------- implementação das funções -------------- */ /* ------------------------------------------------------- */ void mostrarElementoLista(INFOLista X) { printf("%d - ", X.numero); printf("%6d - ", X.NIF); printf("%2d/%2d/%4d - ", X.dia, X.mes, X.ano); printf("%6.2f\n", X.valor); } INFOLista criarElementoLista() { INFOLista X; float soma; X.numero = gerarNumeroInteiro(1000, 2000); X.NIF = gerarNumeroInteiro(123450, 123460); X.dia = gerarNumeroInteiro(1, 28); X.mes = gerarNumeroInteiro(1, 12); X.ano = gerarNumeroInteiro(2020, 2024); X.valor = gerarNumeroReal(1.00, 500.00); return X; } int compararElementosLista(INFOLista X, INFOLista Y) { if (X.numero > Y.numero) return 1; if (X.numero < Y.numero) return -1; return 0; }