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 ~]$