using System.Collections.Generic;
namespace DesafioFundamentos.Models
public class Estacionamento
private decimal precoInicial = 0;
private decimal precoPorHora = 0;
private List<string> veiculos = new List<string>();
public Estacionamento(decimal precoInicial, decimal precoPorHora)
this.precoInicial = precoInicial;
this.precoPorHora = precoPorHora;
public void AdicionarVeiculo()
Console.WriteLine("\nDigite a placa do veículo para estacionar:");
placa = Console.ReadLine();
} while (string.IsNullOrWhiteSpace(placa));
while (veiculos.Contains(placa))
Console.WriteLine($"O veículo de placa '{placa}' já está estacionado.");
Console.WriteLine("\nDigite a placa do veículo para estacionar:");
placa = Console.ReadLine();
Console.WriteLine($"Veículo de placa '{placa}' adicionado com sucesso");
public void RemoverVeiculo()
Console.WriteLine("\nDigite a placa do veículo para remover:");
string placa = Console.ReadLine();
if (veiculos.Any(x => x.ToUpper() == placa.ToUpper()))
Console.WriteLine("\nDigite a quantidade de horas que o veículo permaneceu estacionado:");
string entrada = Console.ReadLine();
bool valido = int.TryParse(entrada, out horas);
Console.WriteLine("## Digite um número não negativo ##");
entrada = Console.ReadLine();
valido = int.TryParse(entrada, out horas);
Console.WriteLine("## Entrada inválida ##\nDigite um número inteiro");
entrada = Console.ReadLine();
valido = int.TryParse(entrada, out horas);
Console.WriteLine("\nDigite a quantidade de horas que o veículo permaneceu estacionado:");
decimal valorTotal = precoInicial + (precoPorHora * horas);
Console.WriteLine($"\nO veículo {placa} foi removido com sucesso\nValor total do Estacionamento: R$ {valorTotal}");
Console.WriteLine("\nDesculpe, esse veículo não está estacionado aqui. Confira se digitou a placa corretamente");
public void ListarVeiculos()
Console.WriteLine("\nExistem " + veiculos.Count + " veículos estacionados." + "\nAs placas dos veículos estacionados são:");
foreach (var veiculo in veiculos)
Console.WriteLine(contador + ". " + veiculo);
Console.WriteLine("\nNão há veículos estacionados.");
public static void Main(string[] args)
Console.OutputEncoding = System.Text.Encoding.UTF8;
decimal precoInicial = 0;
decimal precoPorHora = 0;
Console.Write(" _______ \n"
+" _____//___||_\\ \\___ \n"
+" |_/ \\________/ \\___| \n"
+"_____________\\_/________\\_/_____________________ \n");
Console.WriteLine("## Seja bem vindo ao sistema de estacionamento! ##\nDigite o preço inicial do Estacionamento:");
precoInicial = Convert.ToDecimal(Console.ReadLine());
Console.WriteLine("Digite o preço por hora de estadis no Estacionamento:");
precoPorHora = Convert.ToDecimal(Console.ReadLine());
Estacionamento es = new Estacionamento(precoInicial, precoPorHora);
string opcao = string.Empty;
Console.WriteLine("Digite a sua opção:");
Console.WriteLine("1 - Cadastrar veículo");
Console.WriteLine("2 - Remover veículo");
Console.WriteLine("3 - Listar veículos");
Console.WriteLine("4 - Encerrar");
switch (Console.ReadLine())
Console.WriteLine("\nOpção inválida\nDigite um número entre 1 e 4");
Console.WriteLine("\n## Pressione ENTER para continuar ##");
Console.WriteLine("## Programa encerrado ##");