1217 - Getline Two - Frutas

Precisamos de mais atenção para resolver este problema.

Descrição

Solução

Podemos assumir sempre que todas as frutas estão separadas por um único espaço e não há espaços antes nem depois da linha a ser lida.

Com isso em mente, o problema se torna muito mais fácil para linguagens de baixo nível, já que basta contar quantos espaços existem na linha inteira. Para linguagens de alto nível, podemos contar o número de palavras normalmente separando-as pelo caractere do espaço.

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

int main(){
    char *pos;
    int N, frutas;
    char linha[10000];
    double V, pesoPorDia, gastoPorDia;

    scanf("%d\n", &N);

    pesoPorDia = 0.0;
    gastoPorDia = 0.0;
    
    for(int i = 1; i <= N; ++i){
        scanf("%lf\n", &V);
        scanf("%[^\n]", &linha);

        frutas = 1;
        pos = strchr(linha, ' ');
        while(pos != NULL){
            ++frutas;
            pos = strchr(pos + 1, ' ');
        }

        printf("day %d: %d kg\n", i, frutas);

        pesoPorDia += frutas;
        gastoPorDia += V;
    }

    pesoPorDia /= N;
    gastoPorDia /= N;

    printf("%.2lf kg by day\nR$ %.2lf by day\n", pesoPorDia, gastoPorDia);

    return 0;
}

Last updated