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}"); } }
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")}"); } }
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); } }
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(); }
private static void ExibirMelhorVoltaDaCorrida(CorridaKart corrida) { var volta = corrida.ClassificarMelhorVoltaDaCorrida(); Console.WriteLine($"A melhor volta da corrida foi {volta.TempoDaVolta}"); }
private static void ExibirTempoDeCadaCorredorAposVencedor(CorridaKart corrida) { corrida.CalcularDiferencaDeTempoDoVencedor(); }