using System.Globalization;
public static int[] boletos = new int[4];
static decimal precioPreestreno = 4.50m;
static decimal precioEstreno = 3.50m;
static decimal precioNormal = 3.00m;
static decimal descuentoAdultoMayor = 0.75m;
static decimal descuentoEstudiante = 0.50m;
static decimal descuentoNinoPreestrenoEstreno = 1.00m;
static string diaDescuentoSanSalvador = "miércoles";
static string diaDescuentoSantaAna = "martes";
static string diaDescuentoSanMiguel = "jueves";
static void Main(string[] args)
CultureInfo.CurrentCulture = new CultureInfo("es-SV");
Console.WriteLine("Bienvenido al sistema de boletería de cines de El Salvador.");
Console.WriteLine("\nSeleccione la sucursal:");
Console.WriteLine("1. San Salvador");
Console.WriteLine("2. Santa Ana");
Console.WriteLine("3. San Miguel");
Console.WriteLine("4. Salir");
string sucursal = Console.ReadLine();
if (sucursal == "4") break;
Console.WriteLine("\nSeleccione el tipo de película:");
Console.WriteLine("1. Películas de Preestreno - $4.50");
Console.WriteLine("2. Películas de Estreno - $3.50");
Console.WriteLine("3. Películas Normales - $3.00");
Console.WriteLine("4. Volver al menú de sucursales");
string tipoPelicula = Console.ReadLine();
int[] cantidadTemp = new int[4];
Console.WriteLine("\nIngrese la cantidad de boletos para Adultos:");
cantidadTemp.SetValue(int.Parse(Console.ReadLine()), 0);
Console.WriteLine("Ingrese la cantidad de boletos para Adultos Mayores:");
cantidadTemp.SetValue(int.Parse(Console.ReadLine()), 1);
Console.WriteLine("Ingrese la cantidad de boletos para Niños:");
cantidadTemp.SetValue(int.Parse(Console.ReadLine()), 2);
Console.WriteLine("Ingrese la cantidad de boletos para Estudiantes:");
cantidadTemp.SetValue(int.Parse(Console.ReadLine()), 3);
for (int i = 1; i <= cantidadTemp[3]; i++)
Console.Write(" Porfavor, digite su carnet de estudiante : ");
int car = int.Parse(Console.ReadLine());
for(int i = 0; i < cantidadTemp.Length; i++){
int cantidad = cantidadTemp[i] + boletos[i];
boletos.SetValue(cantidad, i);
decimal total = CalcularTotal(sucursal, tipoPelicula);
ImprimirFactura(tipoPelicula, total);
Console.WriteLine("\n¿Desea realizar otra compra? (S/N)");
string respuesta = Console.ReadLine().ToUpper();
else if (respuesta == "N")
static decimal CalcularTotal(string sucursal, string tipoPelicula)
decimal[] total = new decimal[4];
decimal precioBase = tipoPelicula switch
decimal totalSinDescuentos = (boletos[0] + boletos[1] + boletos[2] + boletos[3]) * precioBase;
decimal totalDescuentos = (boletos[1] * descuentoAdultoMayor) + (boletos[3] * descuentoEstudiante) + (boletos[2] * (tipoPelicula == "1" || tipoPelicula == "2" ? descuentoNinoPreestrenoEstreno : 0m));
decimal totalConDescuentos = totalSinDescuentos - totalDescuentos;
return totalConDescuentos;
static void ImprimirFactura(string tipoPelicula, decimal total)
Console.WriteLine("\nFactura de Pago");
Console.WriteLine("Cantidad\tTipo público\t\tTipo película\t\tPrecio\t\tTotal");
decimal precioPorBoleto = CalcularPrecioPorBoleto(tipoPelicula);
Console.WriteLine($"{boletos[0]}\t\tAdultos\t\t\t\t{tipoPelicula}\t\t{precioPorBoleto}\t\t{boletos[0] * precioPorBoleto}");
Console.WriteLine($"{boletos[1]}\t\tAdultos Mayores\t\t\t{tipoPelicula}\t\t{precioPorBoleto}\t\t{boletos[1] * precioPorBoleto}");
Console.WriteLine($"{boletos[2]}\t\tNiños\t\t\t\t{tipoPelicula}\t\t{precioPorBoleto}\t\t{boletos[2] * precioPorBoleto}");
Console.WriteLine($"{boletos[3]}\t\tEstudiantes\t\t\t{tipoPelicula}\t\t{precioPorBoleto}\t\t{boletos[3] * precioPorBoleto}");
decimal iva = total * 0.13m;
decimal totalSinIva = total - iva;
Console.WriteLine("\nTotal sin iva\t\t\t\t\t\t\t\t\t\t\t" + totalSinIva);
Console.WriteLine("iva\t\t\t\t\t\t\t\t\t\t\t\t" + iva);
Console.WriteLine("Total a pagar\t\t\t\t\t\t\t\t\t\t\t" + total);
static decimal CalcularPrecioPorBoleto(string tipoPelicula)