Home RecentChanges

Atletas

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