typedef struct{ int numAluno; // número de aluno (chave): { 70000, …, 75000 } float notasMTP[2]; // notas dos mini-testes práticos: [0.0, 2.0] float notasTE[2]; // notas dos testes escritos: [0.0, 8.0] int notaFinal; // nota final (valor arredondado da soma das 4 notas): { 0, …, 20 } }INFOAB; /* ------------------------------------------------------- */ /* ---- protótipos/headers das funções da biblioteca ----- */ /* ------------------------------------------------------- */ void mostrarElementoAB (INFOAB); INFOAB criarElementoAB (); // comparação de 2 elementos do tipo INFOAB, segundo o campo numAluno (chave) // devolve -1 se primeiro < segundo, 0 se iguais, 1 se primeiro > segundo int compararElementosAB (INFOAB, INFOAB); /* ------------------------------------------------------- */ /* -------------- implementação das funções -------------- */ /* ------------------------------------------------------- */ void mostrarElementoAB (INFOAB X) { printf("%d - ", X.numAluno); printf("%.2f - %.2f - ", X.notasMTP[0], X.notasMTP[1]); printf("%.2f - %.2f - ", X.notasTE[0], X.notasTE[1]); printf("%2d\n", X.notaFinal); } INFOAB criarElementoAB () { INFOAB X; float soma; X.numAluno = gerarNumeroInteiro(70000, 75000); X.notasMTP[0] = gerarNumeroReal(0.0, 2.0); X.notasMTP[1] = gerarNumeroReal(0.0, 2.0); X.notasTE[0] = gerarNumeroReal(0.0, 8.0); X.notasTE[1] = gerarNumeroReal(0.0, 8.0); soma = X.notasMTP[0] + X.notasMTP[1] + X.notasTE[0] + X.notasTE[1]; X.notaFinal = (int)(soma + 0.5); return X; } // comparação de 2 elementos do tipo INFOAB, segundo o campo numAluno (chave) // devolve -1 se X < Y, 0 se X = Y, 1 se X > Y int compararElementosAB (INFOAB X, INFOAB Y) { if (X.numAluno > Y.numAluno) return 1; if (X.numAluno < Y.numAluno) return -1; return 0; }