/******************************************************************************
Online C# Compiler.
Code, Compile, Run and Debug C# program online.
Write your code in this editor and press "Run" button to execute it.
*******************************************************************************/
using System;
namespace EstacionServicio
{
class Program
{
static class Precios
{
//Dolares por litro
public const float Infinia = 117.1f;
public const float Super = 101.6f;
public const float Diesel = 92.2f;
public const float InfiniaDiesel = 112.8f;
}
static void Main(string[] args)
{
string nombre = "";
while (!nombre.Equals("ZZZ"))
{
Console.Write("Nombre Cliente: ");
nombre = Console.ReadLine();
if (!nombre.Equals("ZZZ"))
{
float importe, capacidad;
string tipoCombustible = PedirTipoCombustible();
string modalidad = PedirModalidad();
if (modalidad.Equals("C"))
{
Console.Write("\nIndique capacidad deseada en litros: ");
capacidad = float.Parse(Console.ReadLine());
importe = PorCapacidad(capacidad, tipoCombustible);
}
else
{
Console.Write("\nIndique el importe en dolares: ");
importe = float.Parse(Console.ReadLine());
capacidad = PorPrecio(importe, tipoCombustible);
}
//Detallamos tiquet
Console.Clear();
Console.WriteLine("\t\tTIQUET OPERACION");
Console.WriteLine("Nombre: {0}", nombre);
Console.WriteLine("Tipo Combustible: {0}", tipoCombustible);
Console.WriteLine("Combustible cargado(litros): {0}", capacidad.ToString("0.##"));
Console.WriteLine("Importe Total: {0}", importe.ToString("0,0.00"));
Console.ReadKey();
Console.Clear();
}
}
}
static string PedirTipoCombustible()
{
string[] tipos = new string[] { "I", "S", "D", "ID" };
string tipo = "";
bool repetir = true;
while (repetir)
{
Console.WriteLine("\n[I] -- Infinia");
Console.WriteLine("[S] -- Super");
Console.WriteLine("[D] -- Diesel");
Console.WriteLine("[ID] -- InfiniaDiesel");
Console.Write("Elija tipo: ");
tipo = Console.ReadLine().ToUpper();
//Si el tipo introducido consta en el array de posibles tipos, el bucle termina
if (Array.Exists(tipos, x => x == tipo))
repetir = false;
}
return tipo;
}
static string PedirModalidad()
{
string modo = "";
while (!modo.Equals("C") && !modo.Equals("P"))
{
Console.WriteLine("\n[C] -- Por Capacidad");
Console.WriteLine("[P] -- Por Precio");
Console.Write("Elija modalidad: ");
modo = Console.ReadLine().ToUpper();
}
return modo;
}
static float PorCapacidad(float litros, string tipo)
{
switch(tipo)
{
case "I":
return litros * Precios.Infinia;
case "S":
return litros * Precios.Super;
case "D":
return litros * Precios.Diesel;
case "ID":
return litros * Precios.InfiniaDiesel;
default:
return 0;
}
}
static float PorPrecio(float importe, string tipo)
{
switch (tipo)
{
case "I":
return importe / Precios.Infinia;
case "S":
return importe / Precios.Super;
case "D":
return importe / Precios.Diesel;
case "ID":
return importe / Precios.InfiniaDiesel;
default:
return 0;
}
}
}
}