Uma empresa armazena no arquivo pessoal.txt as seguintes informações para cada um de seus funcionários: matrícula do funcionário (int), classe do funcionário (1, 2 ou 3), horas de trabalho normal realizadas durante o mês (float), horas extras de trabalho realizadas durante o mês (float). Considere que os valores de pagamento por hora normal de trabalho para os funcionários das classes 1, 2 e 3 são, respectivamente:
e
. Considere que o funcionário recebe
a mais por hora extra. Considere que os descontos correspondem a
do salário bruto do funcionário. Escrever um programa para mostrar o demonstrativo dos totais da folha de pagamento desta empresa:
Total Bruto: R$ xxxxxx.xx
Total de Descontos: R$ xxxxxx.xx
Total Liquido a Pagar: R$ xxxxxx.xx
O programa deverá também gerar o arquivo folha.txt, com os valores individuais para cada funcionário:
Func xxx - Bruto: xxxx.xx - Desc: xxxx.xx - Liquido: xxxx.xx
Total Bruto: R$ xxxxxx.xx
Total de Descontos: R$ xxxxxx.xx
Total Liquido a Pagar: R$ xxxxxx.xx
Func xxx - Bruto: xxxx.xx - Desc: xxxx.xx - Liquido: xxxx.xx
Passo 1
O enunciado pede um programa que leia um arquivo pessoal.txt contendo, para cada funcionário: matrícula (int), classe (1,2 ou 3), horas normais (float) e horas extras (float). Precisamos calcular para cada funcionário o salário bruto, o desconto de 15% e o salário líquido, acumulando também os totais da folha: total bruto, total descontos e total líquido. Vamos usar operações de arquivo, laço de repetição, seleção (para definir o valor da hora) e cálculo aritmético.
Passo 2
Inicializamos três acumuladores em zero para somar os valores globais da folha de pagamento: total_bruto, total_descontos e total_liquido.
Abrimos o arquivo de entrada ‘pessoal.txt’ para leitura e o arquivo de saída ‘folha.txt’ para gravação. Em seguida, iteramos sobre cada linha do arquivo de entrada, fazendo o parsing de matrícula, classe, horas normais (h_n) e horas extras (h_e).
Abrimos o arquivo de entrada ‘pessoal.txt’ para leitura e o arquivo de saída ‘folha.txt’ para gravação. Em seguida, iteramos sobre cada linha do arquivo de entrada, fazendo o parsing de matrícula, classe, horas normais (h_n) e horas extras (h_e).
Passo 3
Definimos o valor da hora normal ® conforme a classe do funcionário: se classe == 1, r = 25; se classe == 2, r = 28; caso contrário (classe 3), r = 30.
Passo 4
Calculamos o salário bruto do funcionário com a fórmula abaixo, lembrando que a hora extra vale 50% a mais do que a hora normal:
Em seguida calculamos o desconto de 15% sobre o bruto e o salário líquido:
Atualizamos os acumuladores: total_bruto += bruto, total_descontos += desconto e total_liquido += liquido.
Passo 5
No mesmo laço, escrevemos no arquivo ‘folha.txt’ uma linha para cada funcionário no formato:
Func <matrícula> - Bruto: <bruto> - Desc: <desconto> - Liquido: <liquido>.
Func <matrícula> - Bruto: <bruto> - Desc: <desconto> - Liquido: <liquido>.
Passo 6
Após processar todos os funcionários, exibimos na tela os totais formatados com duas casas decimais: Total Bruto, Total de Descontos e Total Líquido a Pagar.
Essa estrutura garante que calculamos corretamente os salários individuais, geramos o arquivo de saída e acumulamos os totais da folha para exibir ao final.
Essa estrutura garante que calculamos corretamente os salários individuais, geramos o arquivo de saída e acumulamos os totais da folha para exibir ao final.
Resposta
total_bruto = 0
total_descontos = 0
total_liquido = 0
abre ‘pessoal.txt’ para leitura
abre ‘folha.txt’ para escrita
abre ‘folha.txt’ para escrita
para cada linha em ‘pessoal.txt’:
matricula, classe, h_n, h_e = parse(linha)
se classe == 1:
r = 25
senão se classe == 2:
r = 28
senão:
r = 30
bruto = h_n * r + h_e * r * 1.5
desconto = bruto * 0.15
liquido = bruto - desconto
total_bruto += bruto
total_descontos += desconto
total_liquido += liquido
escreve em ‘folha.txt’:
“Func {} - Bruto: {:.2f} - Desc: {:.2f} - Liquido: {:.2f}”.format(matricula, bruto, desconto, liquido)
matricula, classe, h_n, h_e = parse(linha)
se classe == 1:
r = 25
senão se classe == 2:
r = 28
senão:
r = 30
bruto = h_n * r + h_e * r * 1.5
desconto = bruto * 0.15
liquido = bruto - desconto
total_bruto += bruto
total_descontos += desconto
total_liquido += liquido
escreve em ‘folha.txt’:
“Func {} - Bruto: {:.2f} - Desc: {:.2f} - Liquido: {:.2f}”.format(matricula, bruto, desconto, liquido)
imprime “Total Bruto: R$ {:.2f}”.format(total_bruto)
imprime “Total de Descontos: R$ {:.2f}”.format(total_descontos)
imprime “Total Liquido a Pagar: R$ {:.2f}”.format(total_liquido)
imprime “Total de Descontos: R$ {:.2f}”.format(total_descontos)
imprime “Total Liquido a Pagar: R$ {:.2f}”.format(total_liquido)