using System.Collections.Generic;
public Funcionario(string nome, decimal valor, double horas)
public decimal GetSalario()
return Convert.ToDecimal(horas)*valor;
public class Gerente : Funcionario
public Gerente (string nome, decimal valor, double horas, decimal bonus) :base (nome, valor, horas)
public decimal GetSalario()
return base.GetSalario()+bonus;
public class Vendedor : Funcionario
public Vendedor (string nome, decimal valor, double horas, decimal vendas) :base (nome, valor, horas)
public decimal GetSalario()
return base.GetSalario()+((vendas*20)/100);
public class Faxineiro : Funcionario
public Faxineiro (string nome, decimal valor, double horas) :base (nome, valor, horas){}
public decimal GetSalario()
return base.GetSalario()*(5/100);
public static void Main()
List<Funcionario> func = new List<Funcionario>();
string nome = Console.ReadLine();
Console.Write("Horas: ");
double horas = double.Parse(Console.ReadLine());
Console.Write("Cargo:\n Programador:(PJ)-Junior, (PP)-Pleno, (PS)-Sênior\n (G)erente \n (V)endedor \n (F)axineiro");
string cargo = Console.ReadLine();
f = new Funcionario(nome, valor, horas);
func.Add(new Funcionario(nome, valor, horas));
f = new Funcionario(nome, valor, horas);
func.Add(new Funcionario (nome, valor, horas));
f = new Funcionario(nome, valor, horas);
func.Add(new Funcionario (nome, valor, horas));
Console.Write("Bonus: ");
decimal bonus = decimal.Parse(Console.ReadLine());
f = new Gerente (nome, valor, horas, bonus);
func.Add(new Funcionario (nome, valor, horas));
Console.Write("Vendas Realizadas: ");
decimal vendas = decimal.Parse(Console.ReadLine());
f = new Vendedor (nome, valor, horas, vendas);
func.Add(new Funcionario (nome, valor, horas));
Console.Write("Valor: ");
valor = decimal.Parse(Console.ReadLine());
f = new Faxineiro (nome, valor, horas);
func.Add(new Funcionario (nome, valor, horas));