public virtual void DirigirVeiculoPadrão(Viagem viagem, Carro carro, double litrosCombustivelTanque) { Console.WriteLine("O clima qual o tipo de clima [1] = Sol [2] = Chuva [3] = Neve"); viagem.Clima = Validacao.Validar3opcoes(Console.ReadLine()); Console.WriteLine("Qual a distância da viagem?"); viagem.Distancia = Validacao.ValidarNumerosDouble(Console.ReadLine()); double Autonomia; KmPorAlcool = KmPorAlcoolAtual; KmPorGasolina = KmPorGasolinaAtual; EstadoPneu = EstadoPneuAtual; do { Autonomia = Calculo.CalcularAutonomia(viagem, carro, KmPorAlcool, KmPorGasolina); litrosCombustivelTanque = LitrosGasolina + LitrosAlcool; if (litrosCombustivelTanque * Autonomia < viagem.Distancia) { viagem.Distancia -= litrosCombustivelTanque * Autonomia; litrosCombustivelTanque = 0; LitrosAlcool = 0; LitrosGasolina = 0; } else if (litrosCombustivelTanque * Autonomia > viagem.Distancia) { litrosCombustivelTanque = viagem.Distancia / Autonomia; LitrosGasolina = viagem.Distancia / Autonomia; LitrosAlcool = viagem.Distancia / Autonomia; viagem.Distancia = 0; } else if (litrosCombustivelTanque * Autonomia == viagem.Distancia) { viagem.Distancia = 0; litrosCombustivelTanque = 0; LitrosAlcool = 0; LitrosGasolina = 0; } if (litrosCombustivelTanque == 0 && viagem.Distancia > 0) { Console.WriteLine($"O tanque está com {litrosCombustivelTanque.ToString("F2")} litros, Ainda falta {viagem.Distancia}KM para percorrer\n"); carro.Abastecer(); } } while (viagem.Distancia > 0); Console.WriteLine($"Viagem Concluída há {litrosCombustivelTanque.ToString("F2")} litros no tanque e o Estado do pneu é {EstadoPneu}"); Console.WriteLine("\nAperte qualquer coisa para continuar..."); }
public static double CalcularAutonomiaFlexA(Viagem viagem, Carro carro) { double autonomia = 0; if (viagem.Clima == 1) { autonomia = carro.KmPorAlcool; if (carro.EstadoPneu == 2) { autonomia -= autonomia * 0.0725; } else if (carro.EstadoPneu == 1) { autonomia -= autonomia * 0.0915; } } else if (viagem.Clima == 2) { carro.KmPorGasolina -= carro.KmPorGasolina * 0.12; carro.KmPorAlcool -= carro.KmPorGasolina * 0.30; autonomia = carro.KmPorAlcool; if (carro.EstadoPneu == 2) { autonomia -= autonomia * 0.0725; } else if (carro.EstadoPneu == 1) { autonomia -= autonomia * 0.0915; } } else if (viagem.Clima == 3) { carro.KmPorGasolina -= carro.KmPorGasolina * 0.19; carro.KmPorAlcool -= carro.KmPorGasolina * 0.30; autonomia = carro.KmPorAlcool; if (carro.EstadoPneu == 2) { autonomia -= autonomia * 0.0725; } else if (carro.EstadoPneu == 1) { autonomia -= autonomia * 0.0915; } } return(autonomia); }
public virtual void DirigirVeiculoFlex(Viagem viagem, Carro carro) { Console.WriteLine("O clima está ruim?"); viagem.Clima = Validacao.Validar3opcoes(Console.ReadLine()); Console.WriteLine("Digite a distância da viagem"); viagem.Distancia = Validacao.ValidarNumerosDouble(Console.ReadLine()); KmPorAlcool = KmPorAlcoolAtual; KmPorGasolina = KmPorGasolinaAtual; EstadoPneu = EstadoPneuAtual; do { KmPorAlcool = Calculo.CalcularAutonomiaFlexA(viagem, carro); KmPorGasolina = Calculo.CalcularAutonomiaFlexG(viagem, carro); while (LitrosAlcool != 0 && viagem.Distancia > 0) { if (LitrosAlcool * KmPorAlcool < viagem.Distancia) { viagem.Distancia -= LitrosAlcool * KmPorAlcool; LitrosAlcool = 0; } else if (LitrosAlcool * KmPorAlcool > viagem.Distancia) { LitrosAlcool -= viagem.Distancia / KmPorAlcool; viagem.Distancia = 0; } else if (LitrosAlcool * KmPorAlcool == viagem.Distancia) { viagem.Distancia = 0; LitrosAlcool = 0; } } while (LitrosGasolina != 0 && viagem.Distancia > 0) { if (LitrosGasolina * KmPorGasolina < viagem.Distancia) { viagem.Distancia -= LitrosGasolina * KmPorGasolina; LitrosGasolina = 0; } else if (LitrosGasolina * KmPorGasolina > viagem.Distancia) { LitrosGasolina -= viagem.Distancia / KmPorGasolina; viagem.Distancia = 0; } else if (LitrosGasolina * KmPorGasolina == viagem.Distancia) { viagem.Distancia = 0; LitrosGasolina = 0; } } if (LitrosAlcool == 0 && LitrosGasolina == 0 && viagem.Distancia > 0) { Console.WriteLine($"O tanque está com {(LitrosAlcool + LitrosGasolina).ToString("F2")} litros, Ainda falta {viagem.Distancia}KM para percorrer\n"); carro.Abastecer(); } } while (viagem.Distancia > 0); }
public static double CalcularAutonomia(Viagem viagem, Carro carro, double alcool, double gasolina) { double autonomia = 0; if (viagem.Clima == 1) { autonomia = alcool + gasolina; if (carro.EstadoPneu == 2) { autonomia -= autonomia * 0.0725; } else if (carro.EstadoPneu == 1) { autonomia -= autonomia * 0.0915; } } else if (viagem.Clima == 2) { if (carro.TipoCombustivel == "gasolina") { gasolina -= gasolina * 0.12; autonomia = gasolina; if (carro.EstadoPneu == 2) { autonomia -= autonomia * 0.0725; } else if (carro.EstadoPneu == 1) { autonomia -= autonomia * 0.0915; } } else if (carro.TipoCombustivel == "alcool") { alcool -= alcool * 0.12; alcool -= alcool * 0.30; autonomia = alcool; if (carro.EstadoPneu == 2) { autonomia -= autonomia * 0.0725; } else if (carro.EstadoPneu == 1) { autonomia -= autonomia * 0.0915; } } } else if (viagem.Clima == 3) { if (carro.TipoCombustivel == "gasolina") { gasolina -= gasolina * 0.19; autonomia = gasolina; if (carro.EstadoPneu == 2) { autonomia -= autonomia * 0.0725; } else if (carro.EstadoPneu == 1) { autonomia -= autonomia * 0.0915; } } else if (carro.TipoCombustivel == "alcool") { alcool -= alcool * 0.19; alcool -= alcool * 0.30; autonomia = alcool; if (carro.EstadoPneu == 2) { autonomia -= autonomia * 0.0725; } else if (carro.EstadoPneu == 1) { autonomia -= autonomia * 0.0915; } } } return(autonomia); }