A produção semanal de uma empresa é armazenada no arquivo producao.txt, que contém em cada linha, 5 valores do tipo int correspondentes ao total produzido de segunda-feira a sexta-feira. Ou seja, cada linha do arquivo producao.txt corresponde
a uma semana de produção da empresa. Escrever um programa que, a partir do arquivo producao.txt, mostra o seguinte relatório:
RELATORIO DE PRODUCAO RELATIVO A xx SEMANAS
PRODUCAO SEMANAL MEDIA = xxxxx.x
PRODUCAO DIARIA MEDIA = xxxx.x

Passo 1

A questão pede para criar um programa em C que leia o arquivo “producao.txt”, onde cada linha tem 5 inteiros representando a produção de segunda a sexta de uma semana, e em seguida gere um relatório com o número de semanas processadas, a produção média semanal e a produção média diária.

Passo 2

Antes de tudo, precisamos abrir o arquivo em modo de leitura usando fopen. Se fopen retornar NULL, significa que houve erro ao abrir o arquivo e devemos exibir uma mensagem de erro e encerrar o programa.
Vamos usar três variáveis inteiras: totalSemanas (contador de linhas lidas), dia1, dia2, dia3, dia4, dia5 (para capturar cada valor lido) e duas variáveis auxiliares do tipo int ou float para acumular somas – somaSemanalTotal e somaTotalDiario. Inicializamos totalSemanas=0, somaSemanalTotal=0 e somaTotalDiario=0.

Passo 3

Fazemos um laço while que usa fscanf(f, “%d %d %d %d %d”, &dia1, &dia2, &dia3, &dia4, &dia5) e enquanto retornar 5 (quantidade de itens lidos), processamos cada semana: incrementamos totalSemanas, calculamos somaSemana = dia1+dia2+dia3+dia4+dia5, e somamos somaSemanalTotal += somaSemana e somaTotalDiario += somaSemana.
Ao final da leitura, calculamos a média semanal como mediaSemanal = somaSemanalTotal / (float)totalSemanas e a média diária como mediaDiaria = somaTotalDiario / (float)(totalSemanas * 5). O cast para float é necessário para evitar divisão inteira.

Passo 4

Por fim, exibimos o relatório usando printf com formatação de uma casa decimal:
Em C:
Código completo:

Resposta

#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *f = fopen(“producao.txt”, “r”);
if (f == NULL) {
perror(“Erro ao abrir producao.txt”);
return EXIT_FAILURE;
}
int dia1, dia2, dia3, dia4, dia5;
int totalSemanas = 0;
int somaSemanalTotal = 0;
int somaTotalDiario = 0;

while (fscanf(f, "%d %d %d %d %d", &dia1, &dia2, &dia3, &dia4, &dia5) == 5) {
    totalSemanas++;
    int somaSemana = dia1 + dia2 + dia3 + dia4 + dia5;
    somaSemanalTotal += somaSemana;
    somaTotalDiario += somaSemana;
}

fclose(f);

if (totalSemanas == 0) {
    printf("Nenhuma semana encontrada em producao.txt.\n");
    return EXIT_FAILURE;
}

float mediaSemanal = somaSemanalTotal / (float) totalSemanas;
float mediaDiaria = somaTotalDiario / (float) (totalSemanas * 5);

printf("RELATORIO DE PRODUCAO RELATIVO A %d SEMANAS\n", totalSemanas);
printf("PRODUCAO SEMANAL MEDIA = %.1f\n", mediaSemanal);
printf("PRODUCAO DIARIA MEDIA = %.1f\n", mediaDiaria);

return EXIT_SUCCESS;
}

Exercícios relacionados