1218 - Getline Three - Calçados

Terminando a trilogia getline!

Descrição

Solução

Podemos considerar que a entrada sempre vai ter o formato de um número entre 20 e 44 (ou seja, sempre dois dígitos), um caractere de espaço, uma letra (M ou F) e outro caractere de espaço, num total de 5 caracteres para cada sapato.

Com isso, podemos usar uma tática parecida com a do problema 1217 - Getline Two - Frutas para a obtenção das informações em linguagens de baixo nível.

#include <string.h>
#include <stdio.h>

int main()
{
    char genero, linha[1000];
    int caso, tamanho_desejado, masculino, feminino, tamanho;

    caso = 0;
    while (scanf("%d\n", &tamanho_desejado) != EOF)
    {
        if (caso > 0)
            printf("\n");

        scanf("%[^\n]\n", &linha);

        masculino = feminino = 0;
        for (int i = 0; i < strlen(linha); i += 5)
        {
            tamanho = 10 * (linha[i] - '0') + (linha[i + 1] - '0');
            genero = linha[i + 3];

            if (tamanho == tamanho_desejado)
            {
                if (genero == 'F')
                    ++feminino;
                else
                    ++masculino;
            }
        }

        printf("Caso %d:\n", ++caso);
        printf("Pares Iguais: %d\nF: %d\nM: %d\n", feminino + masculino, feminino, masculino);
    }

    return 0;
}

Last updated