Example #1
0
 private static void ExibirMelhorVoltaDeCadaPiloto(CorridaKart corrida)
 {
     foreach (var piloto in corrida.Pilotos)
     {
         Console.WriteLine($"O piloto {piloto.Nome} se destacou na volta nº {piloto.GetMelhorVolta().NumeroDaVolta} fazendo {piloto.GetMelhorVolta().TempoDaVolta}");
     }
 }
Example #2
0
 private static void ExibirVelocidadeMediaDeCadaPiloto(CorridaKart corrida)
 {
     foreach (var piloto in corrida.Pilotos)
     {
         Console.WriteLine($"A velocidade média do piloto {piloto.Nome} foi de {piloto.CalcularVelocidadeMedia().ToString("00.00")}");
     }
 }
Example #3
0
        public CorridaKart LerArquivoDeLog()
        {
            try
            {
                var    arquivo = new StreamReader(Nome);
                string linha   = null;
                var    corrida = new CorridaKart();
                while ((linha = arquivo.ReadLine()) != null)
                {
                    MatchCollection matches = Regex.Matches(linha, PadraoRegex);

                    foreach (Match match in matches)
                    {
                        Piloto piloto = new Piloto();
                        Volta  volta  = new Volta();

                        //Adicionando informações do piloto.
                        piloto.Id   = Convert.ToInt32(match.Groups[2].Value);
                        piloto.Nome = match.Groups[3].Value;

                        //Adicionando informações da volta.
                        volta.HoraVolta              = TimeSpan.Parse(match.Groups[1].Value);
                        volta.NumeroDaVolta          = Convert.ToInt32(match.Groups[4].Value);
                        volta.TempoDaVolta           = TimeSpan.Parse($"00:{match.Groups[5].Value}");
                        volta.VelocidadeMediaDaVolta = Convert.ToDouble(match.Groups[6].Value);

                        var pilotoExiste = corrida.VerificarSeOPilotoExiste(piloto);

                        if (pilotoExiste)
                        {
                            var pilotoEncontrado = corrida.GetPiloto(piloto);
                            pilotoEncontrado.AdicionarVolta(volta);
                            continue;
                        }

                        piloto.AdicionarVolta(volta);
                        corrida.AdicionarPilotoNaCorrida(piloto);
                    }
                }
                return(corrida);
            }
            catch (FileNotFoundException)
            {
                throw new FileNotFoundException("O arquivo especificado não está no diretório especificado ou não existe", Nome);
            }
        }
Example #4
0
        static void Main(string[] args)
        {
            string pattern = @"^(\d{2}:\d{2}:\d{2}\.\d{0,3})\s*(\d{0,3})\s*\–\s*([A-z\.]+)\s*(\d)\s*(\d{0,2}:\d{0,2}\.\d{0,3})\s*(\d+\,\d+)+\s*$";

            Console.WriteLine("---------------------------------------\r");
            Console.WriteLine("-Gerador de resultados da Corrida Kart- \r");
            Console.WriteLine("---------------------------------------\n");

            Console.Write("Por favor, informe o nome do arquivo de log para gerar o resultado e aperte ENTER: ");
            string nomeArquivo = Console.ReadLine();

            Arquivo     arquivo = new Arquivo(nomeArquivo, pattern);
            CorridaKart corrida = null;

            try
            {
                corrida = arquivo.LerArquivoDeLog();

                Console.WriteLine("Arquivo de LOG processado com sucesso!!!");

                string opcao = "S";

                while (opcao.ToUpper() == "S")
                {
                    Console.WriteLine();
                    Console.WriteLine("Escolha uma das opções da lista abaixo: ");
                    Console.WriteLine("\t1 - Classificar pilotos da corrida");
                    Console.WriteLine("\t2 - Ver melhor volta de cada piloto");
                    Console.WriteLine("\t3 - Ver a melhor volta da corrida");
                    Console.WriteLine("\t4 - Ver a velocidade média de cada piloto durante a corrida");
                    Console.WriteLine("\t5 - Ver quanto tempo cada piloto chegou após o vencedor");
                    Console.Write("Opção: ");

                    switch (Console.ReadLine())
                    {
                    case "1":
                        var classificacao = corrida.ClassificarOrdemDeChegada();
                        ExibirClassificacao(classificacao);
                        break;

                    case "2":
                        ExibirMelhorVoltaDeCadaPiloto(corrida);
                        break;

                    case "3":
                        ExibirMelhorVoltaDaCorrida(corrida);
                        break;

                    case "4":
                        ExibirVelocidadeMediaDeCadaPiloto(corrida);
                        break;

                    case "5":
                        ExibirTempoDeCadaCorredorAposVencedor(corrida);
                        break;

                    default:
                        Console.WriteLine("Ops! Essa opção não está disponível. Por favor, selecione uma das opções acima.");
                        break;
                    }
                    Console.WriteLine();
                    Console.WriteLine("Deseja realizar mais alguma operação?");
                    Console.Write("Opção (S/N): ");
                    opcao = Console.ReadLine();
                }
            }
            catch (FileNotFoundException ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.WriteLine("Pressione qualquer tecla para finalizar a aplicação...");
            Console.ReadLine();
        }
Example #5
0
        private static void ExibirMelhorVoltaDaCorrida(CorridaKart corrida)
        {
            var volta = corrida.ClassificarMelhorVoltaDaCorrida();

            Console.WriteLine($"A melhor volta da corrida foi {volta.TempoDaVolta}");
        }
Example #6
0
 private static void ExibirTempoDeCadaCorredorAposVencedor(CorridaKart corrida)
 {
     corrida.CalcularDiferencaDeTempoDoVencedor();
 }