Empresa: reajuste salarial
Uma empresa aplicará um reajuste salarial a todos os seus funcionários baseado no cargo ocupado e no tempo de serviço, conforme as especificações a seguir:
Cargo
Tempo de serviço
Até 3 anos
(inclusive)
3 a 6 anos
Acima de 6 anos
(exclusive)
Gerente
12%
13%
15%
Engenheiro
7%
11%
14%
Outros
5%
5%
5%
Faça um programa que receba como entrada o cargo, o tempo de serviço e o salário atual de um funcionário, em seguida, calcula e imprime o reajuste concedido e o salário reajustado. O salário atual não pode ser inferior ao salário mínimo, ou seja, R$ 1039,00, caso isso ocorra, a mensagem “Salário inválido!” deve ser impressa na tela e o programa deve ser encerrado.
Entrada:
O primeiro valor é uma string e indica o cargo do funcionário. O segundo valor, que é um número inteiro, indica o tempo de serviço do funcionário. O terceiro valor, que é um número real, representa o salário atual do funcionário. Considere que o tempo de serviço sempre será um número válido, não é necessário validar. Os valores devem ser lidos um por linha.
Saída:
Dois valores reais, apresentados um por linha. O primeiro valor é o reajuste que será concedido e o segundo é o salário já reajustado. Observe que os valores de reajuste e salário reajustado são impressos com duas casas decimais de precisão.
For example:
Input Result
Engenheiro
3
8000
560.00
8560.00
Gerente
6
7500
975.00
8475.00
Auxiliar de escritório
7
1700
85.00
1785.00
Analista de TI
4
2089
104.45
2193.45
Segurança
3
998
Salário inválido!
Soluções para a tarefa
Resposta:
Algoritmo "reajustesalarial"
Var
cargo: caracter
tempo_servico: inteiro
salario_atual, reajuste, novo_salario: real
Inicio
escreva("Digite o cargo: ")
leia(cargo)
escreva("Digite o tempo de serviço(em anos): ")
leia(tempo_servico)
escreva("Digite o salário atual: R$ ")
leia(salario_atual)
se(salario_atual < 1039) entao
escreva("Salário inválido!")
Fimalgoritmo
senao
se(cargo = "Gerente") e (tempo_servico <= 3) entao
reajuste <- salario_atual * 12 / 100
novo_salario <- salario_atual + reajuste
senao
se(cargo = "Gerente") e (tempo_servico > 3) e (tempo_servico <= 6) entao
reajuste <- salario_atual * 13 / 100
novo_salario <- salario_atual + reajuste
senao
se(cargo = "Gerente") e (tempo_servico <= 6) entao
reajuste <- salario_atual * 15 / 100
novo_salario <- salario_atual + reajuste
senao
se(cargo = "Engenheiro") e (tempo_servico <= 3) entao
reajuste <- salario_atual * 7 / 100
novo_salario <- salario_atual + reajuste
senao
se(cargo = "Engenheiro") e (tempo_servico > 3) e (tempo_servico <= 6) entao
reajuste <- salario_atual * 11 / 100
novo_salario <- salario_atual + reajuste
senao
se(cargo = "Engenheiro") e (tempo_servico <= 6) entao
reajuste <- salario_atual * 14 / 100
novo_salario <- salario_atual + reajuste
senao
reajuste <- salario_atual * 5 / 100
novo_salario <- salario_atual + reajuste
fimse
fimse
fimse
fimse
fimse
fimse
fimse
escreval("")
escreval("Cargo: ", cargo)
escreval("Tempo de Serviço: ", tempo_servico, " anos")
escreval("Salário Atual: R$ ", salario_atual:6:2)
escreval("Reajuste: R$ : ", reajuste:6:2)
escreval("Novo Salário: R$ ", novo_salario:6:2)
Fimalgoritmo
Explicação:
Desenvolvi o algoritmo no Visualg. Ele está funcionado conforme pede o enunciado, mas há um detalhe na primeira condição.
O exercício pede para que se o salário for abaixo de R$ 1039, exiba a mensagem " Salário inválido!" e feche o programa.
Inseri o comando fimalgoritmo na primeira condição para que ao exibir a mensagem o programa encerre. Se caso eu não tivesse inserido o comando, antes de fechar o programa ia ser exibido também as últimas 5 linhas do código.
Outra possível solução seria retirar as últimas 5 linhas do código e inseri-las em todas as condições dentro do laço (menos na primeira).
### SUBPROGRAMAS
# executa o subprograma 'reajuste_salarial' utilizando os valores de 'cargo', 'tempo' e 'salário'
def reajuste_salarial(cargo, tempo, salario):
reajuste = 0
# Se o cargo for de 'GERENTE' (tudo em maiúsculo, por causa do 'upper()' no input da string
if cargo.upper() == 'GERENTE':
# Se o tempo no cargo for até 3 anos, inclusive
if tempo <= 3:
# O reajuste de todos os cargos abaixo está em R$
reajuste = salario*(12/100)
# Se o tempo no cargo for maior que 3 e até 6 anos, inclusive
elif 3 < tempo <= 6:
reajuste = salario*(13/100)
# Se o tempo no cargo for superior a 6 anos
else:
reajuste = salario*(15/100)
# Se o cargo for de 'ENGENHEIRO'
elif cargo.upper() == 'ENGENHEIRO':
# Se o tempo no cargo for até 3 anos, inclusive
if tempo <= 3:
reajuste = salario*(7/100)
# Se o tempo no cargo for maior que 3 e até 6 anos, inclusive
elif 3 < tempo <= 6:
reajuste = salario*(11/100)
# Se o tempo no cargo for superior a 6 anos
else:
reajuste = salario*(14/100)
# Se o cargo for de qualquer outro que não 'GERENTE' ou 'ENGENHEIRO'
else:
# Não importa o tempo de serviço, nesse caso, pois o reajuste será sempre de 5%
reajuste = salario*(5/100)
# Imprime no console o reajuste em R$ com duas casas decimais
print('O reajuste para o funcionário é de R$ {:.2f}.'.format(reajuste))
# Imprime no console o salário reajustado, também com duas casas decimais
print('O salário reajustado do funcionário é de R$ {:.2f}'.format(salario+reajuste))
### PROGRAMA PRINCIPAL
# O campo 'cargo' é uma string.
cargo = str(input('Insira o cargo do funcionário: '))
# O campo 'tempo' é um número inteiro
tempo = int(input('Insira o tempo de empresa do funcionário: '))
# O campo 'salário' é um número real x.x
salario = float(input('Insira o salário atual do funcionário: R$ '))
# Se o salário inicial for abaixo do salário mínimo no problema (R$ 1039.00) o programa avisa o usuário e encerra
if (salario < 1039.00):
print('Salário inválido!')
# Se não ele continua o cálculo do reajuste
else:
# Executa o subprograma reajuste
reajuste_salarial(cargo,tempo,salario)