Ficheiro atletas.c
:
#include <stdio.h> #include <stdlib.h> #include <values.h> #define DIM1 5 #define DIM2 7 void leMatriz (float tempos[][DIM2], int atletas, int sessoes); void escreveMediaColunas(float tempos[][DIM2], int atletas, int sessoes); void escreveMinimoLinhas(float tempos[][DIM2], int atletas, int sessoes); int main() { float tempos[DIM1][DIM2]; leMatriz(tempos, DIM1, DIM2); escreveMediaColunas(tempos, DIM1, DIM2); escreveMinimoLinhas(tempos, DIM1, DIM2); return EXIT_SUCCESS; } void leMatriz (float tempos[][DIM2], int atletas, int sessoes) { int i, j; for (i = 0; i < atletas; i++) for (j = 0; j < sessoes; j++) scanf("%f", &tempos[i][j]); } void escreveMediaColunas(float tempos[][DIM2], int atletas, int sessoes) { int i, j; float total; for (j = 0; j < sessoes; j++) { for (i = 0, total = 0.0; i < atletas; i++) total += tempos[i][j]; printf("Média da sessão %d: %f\n", j, total/atletas); } } void escreveMinimoLinhas(float tempos[][DIM2], int atletas, int sessoes) { int i, j; float min; for (i = 0; i < atletas; i++) { for (j = 0, min = FLT_MAX; j < sessoes; j++) if (min > tempos[i][j]) min = tempos[i][j]; printf("Mínimo do atleta %d: %f\n", i, min); } }
Gerar ficheiro de entrada (ficheiro input.txt
):
[aplf@darkstar ~]$ for X in $(seq 1 35); do echo $RANDOM; done > input.txt [aplf@darkstar ~]$
Compilação e execução:
[aplf@darkstar ~]$ gcc -Wall -ansi -pedantic -o atletas atletas.c [aplf@darkstar ~]$ ./atletas < input.txt Média da sessão 0: 9499.428711 Média da sessão 1: 11005.857422 Média da sessão 2: 10081.286133 Média da sessão 3: 12923.428711 Média da sessão 4: 11915.713867 Média da sessão 5: 8155.000000 Média da sessão 6: 14491.857422 Mínimo do atleta 0: 855.000000 Mínimo do atleta 1: 385.000000 Mínimo do atleta 2: 8687.000000 Mínimo do atleta 3: 3236.000000 Mínimo do atleta 4: 7818.000000 [aplf@darkstar ~]$