Lógica, perguntado por Brun152, 9 meses atrás

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!


gazetasilvio: Alguma linguagem de programação específica?

Soluções para a tarefa

Respondido por gazetasilvio
2

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).

Respondido por dazevedoc
0

### 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)

Perguntas interessantes