/*
 * Questão:
 * Em um campeonato Europeu de Volleyball, se inscreveram 30 países.
 * Sabendo-se que na lista oficial de cada país consta, além de outros dados,
 * peso e idade de 12 jogadores, crie um programa que leia e apresente as seguintes informações: 
 *  • O peso médio e a idade média de cada um dos times;
 *  • O atleta mais pesado de cada time;
 *  • O atleta mais jovem de cada time;
 *  • O peso médio e a idade média de todos os participantes
 */
#include <stdio.h>
#include <stdlib.h>

#define NUM_PAISES 2
#define NUM_JOG 2

typedef struct {
    float peso;
    int idade;
} tipoJogador;

int main()
{
    tipoJogador info[NUM_PAISES][NUM_JOG]; // matriz com Jogadores por País
    int idx_pais, idx_jog; //índice de países e de jogadores
    // Vou explicar essas de baixo no decorrer do código:
    float peso_medio_time[NUM_PAISES], idade_media_time[NUM_PAISES], mais_pesado_time[NUM_PAISES],
          peso_medio_geral, idade_media_geral;
    int idx_mais_pesado_time[NUM_PAISES], mais_jovem_time[NUM_PAISES], idx_mais_jovem_time[NUM_PAISES];
    
    //gerando os índices para os países com o "for"
    for (idx_pais=0;idx_pais<NUM_PAISES;idx_pais++)
    {
        printf("Coletando dados do país %d:\n", idx_pais);
        //gerando os índices para os jogadores com o "for"
        for (idx_jog=0;idx_jog<NUM_JOG;idx_jog++)
        {
            printf("  Coletando dados do jogador %d:\n", idx_jog);
            // matriz na posição país: info[idx_pais]
            // matriz desse país na posição do jogador: info[idx_pais][idx_jog]
            // acesso a estrutura (struct) desse jogador, posição idade:
            printf("  Idade: ");
            scanf("%d", &info[idx_pais][idx_jog].idade);
            // acesso a estrutura (struct) desse jogador, posição peso:
            printf("  Peso: ");
            scanf("%f", &info[idx_pais][idx_jog].peso);
            // Linha em branco pra ficar mais fácil a visualização na tela
            printf("\n");
        }
    }
    
    // Agora que os dados foram coletados, vamos fazer as contas.
    // vou fazer cada um separado para ficar mais legível, mas pode fazer junto também.
    
    // para peso médio e idade média, temos que ver que cada time é um país.
    // por isso, temos que fazer um vetor com uma posição para cada país:
    // peso_medio_time[NUM_PAISES], idade_media_time[NUM_PAISES]
    // Agora, é percorrer pelos jogadores de cada país fazer a soma do peso e da idade
    // Como deseja-se a média, após somar o peso e a idade, vamos dividir pelo número de jogadores
    // 1º passo: zerar os acumuladores (é como chamamos as varíaveis que vão acumular somas, produtos, etc. de outras variáveis):
    for (idx_pais=0;idx_pais<NUM_PAISES;idx_pais++)
    {
        peso_medio_time[idx_pais] = 0.0;
        idade_media_time[idx_pais] = 0.0;
    }
    // 2º passo: somar o peso e a idade de cada jogar para cada país
    for (idx_pais=0;idx_pais<NUM_PAISES;idx_pais++)
    {
        // Obs.: o conteúdo do 1º passo poderia ter sido feito aqui (nessa linha)
        //       ao invés de ser feito lá em cima
        
        // país da posição "idx_pais": peso_medio_time[idx_pais] e idade_media_time[idx_pais]
        for (idx_jog=0;idx_jog<NUM_JOG;idx_jog++)
        {
            // jogador da posição "idx_jog"
            peso_medio_time[idx_pais] += info[idx_pais][idx_jog].peso;
            idade_media_time[idx_pais] += info[idx_pais][idx_jog].idade;
        }
        // 3º passo: agora que já fiz a soma dos jogadores, vou dividir pela quantidade de jogadores
        peso_medio_time[idx_pais] = peso_medio_time[idx_pais] / NUM_JOG;
        idade_media_time[idx_pais] = idade_media_time[idx_pais] / NUM_JOG;
    }
    // 3º passo: também poderia ter sido feito aqui fora, em um laço separado para ele:
    /*for (idx_pais=0;idx_pais<NUM_PAISES;idx_pais++)
    {
        peso_medio_time[idx_pais] = peso_medio_time[idx_pais] / NUM_JOG;
        idade_media_time[idx_pais] = idade_media_time[idx_pais] / NUM_JOG;
    }*/
    // 4º passo: imprimir na tela (ou poderia ter feito no último FOR):
    printf("\n"); //linha em branco pra separar a saída dos demais
    for (idx_pais=0;idx_pais<NUM_PAISES;idx_pais++)
    {
        printf("Peso  médio do time %d: %.2f\n",  idx_pais, peso_medio_time[idx_pais]);
        printf("Idade média do time %d: %.2f\n", idx_pais, idade_media_time[idx_pais]);
    }
        
    // Agora, vamos calcular o atleta mais pesado de cada time em "mais_pesado_time[NUM_PAISES]"
    // 1º passo: zerar o vetor mais_pesado_time[NUM_PAISES]:
    for (idx_pais=0;idx_pais<NUM_PAISES;idx_pais++)
    {
        // como eu quero achar o mais pesado, vou "zerar" (termo usado) com -1
        // pois assim, qualquer peso que eu comparar, mesmo zero, será maior que ele
        // obs.: a forma mais ágil seria colocar o primeiro atleta de cada time como o mais pesado
        mais_pesado_time[idx_pais] = -1.0;
    }
    // 2º passo: procurar o mais pesado:
    for (idx_pais=0;idx_pais<NUM_PAISES;idx_pais++)
    {
        // país da posição "idx_pais": info[idx_pais], mais_pesado_time[idx_pais] e
        //                             idx_mais_pesado_time[idx_pais]
        for (idx_jog=0;idx_jog<NUM_JOG;idx_jog++)
        {
            // jogador da posição "idx_jog": info[idx_pais][idx_jog]
            // se o peso do jogador é mais pesado que o peso já armazenado como mais pesado:
            if (info[idx_pais][idx_jog].peso > mais_pesado_time[idx_pais])
            {
                // peso mais pesado é o atual:
                mais_pesado_time[idx_pais] = info[idx_pais][idx_jog].peso;
                // índixe do peso mais pesado é atualizado:
                idx_mais_pesado_time[idx_pais] = idx_jog;
            }
        }
    }
    // 4º passo: imprimir na tela:
    printf("\n"); //linha em branco pra separar a saída dos demais
    for (idx_pais=0;idx_pais<NUM_PAISES;idx_pais++)
    {
        printf("Jogador mais pesado do país %d:\n", idx_pais);
        printf("  Número do jogador: %d\n", idx_mais_pesado_time[idx_pais]);
        printf("  Peso: %.2f\n", mais_pesado_time[idx_pais]);
    }
    
    // Agora, vamos procurar o atleta mais jovem de cada time:
    // 1º passo: zerar o vetor mais_jovem_time[NUM_PAISES]:
    for (idx_pais=0;idx_pais<NUM_PAISES;idx_pais++)
    {
        // vamos colocar um valor muito alto agora (9999), pois qualquer um vai
        // ser mais jovem que 999
        mais_jovem_time[idx_pais] = 999;
    }
    // 2º passo: procurar o mais jovem:
    for (idx_pais=0;idx_pais<NUM_PAISES;idx_pais++)
    {
        // país da posição "idx_pais": info[idx_pais], mais_jovem_time[idx_pais] e
        //                             idx_mais_jovem_time[idx_pais]
        for (idx_jog=0;idx_jog<NUM_JOG;idx_jog++)
        {
            // jogador da posição "idx_jog": info[idx_pais][idx_jog]
            if (info[idx_pais][idx_jog].idade < mais_jovem_time[idx_pais])
            {
                mais_jovem_time[idx_pais] = info[idx_pais][idx_jog].idade;
                idx_mais_jovem_time[idx_pais] = idx_jog;
            }
        }
    }
    // 3º passo: imprimir na tela:
    printf("\n"); //linha em branco pra separar a saída dos demais
    for (idx_pais=0;idx_pais<NUM_PAISES;idx_pais++)
    {
        printf("Jogador mais jovem do país %d:\n", idx_pais);
        printf("  Número do jogador: %d\n", idx_mais_jovem_time[idx_pais]);
        printf("  Idade: %d\n", mais_jovem_time[idx_pais]);
    }
    
    // Agora, vamos calcular o peso médio e a  idade média de todos os participantes:
    // 1º passo: zerar as variáveis correspondentes (acumuladores correspondentes):
    peso_medio_geral = 0.0;
    idade_media_geral = 0.0;
    // 2º passo: acumular a soma geral:
    for (idx_pais=0;idx_pais<NUM_PAISES;idx_pais++)
    {
        // país da posição "idx_pais": info[idx_pais]
        for (idx_jog=0;idx_jog<NUM_JOG;idx_jog++)
        {
            // jogador da posição "idx_jog": info[idx_pais][idx_jog]
            peso_medio_geral += info[idx_pais][idx_jog].peso;
            idade_media_geral += info[idx_pais][idx_jog].idade;
        }
        // 3º passo: como acabei de percorrer todos os jogadores do time, é hora de
        //           dividir pelo total de jogadores (NUM_JOG):
        peso_medio_geral = peso_medio_geral / NUM_JOG;
        idade_media_geral = idade_media_geral / NUM_JOG;
    }
    // 4º passo: imprimir na tela (ou poderia ter sido feito dentro do último FOR)
    printf("\n"); //linha em branco pra separar a saída dos demais
    for (idx_pais=0;idx_pais<NUM_PAISES;idx_pais++)
    {
        printf("Peso  médio geral do time %d: %.2f\n",  idx_pais, peso_medio_geral);
        printf("Idade média geral do time %d: %.2f\n", idx_pais, idade_media_geral);
    }
}