/// <summary> /// Producto de una cantidad de dinero por un número decimal. /// </summary> /// <param name="d">Cantidad de dinero.</param> /// <param name="factor">Número por el que se multiplicará el dinero.</param> /// <returns>Cantidad de dinero resultante.</returns> public static Dinero operator *(Dinero d, decimal factor) { Dinero producto; producto = new Dinero(d.cantidad * factor, d.moneda); return(producto); }
/// <summary> /// División de una cantidad de dinero entre un número decimal. /// </summary> /// <param name="d">Cantidad de dinero.</param> /// <param name="factor">Número por el que se dividirá el dinero.</param> /// <returns>Cantidad de dinero resultante.</returns> public static Dinero operator /(Dinero d, decimal divisor) { Dinero cociente; cociente = new Dinero(d.cantidad / divisor, d.moneda); return(cociente); }
/// <summary> /// Convierte una cantidad de dinero de una moneda a otra. /// </summary> /// <param name="nuevamoneda">Moneda a la que se convierte el dinero dado.</param> /// <returns>Objeto del tipo Dinero con el dinero dado convertido a la moneda dada.</returns> public Dinero ConvierteEn(TipoMoneda nuevamoneda) { Dinero d = new Dinero(this.cantidad, this.moneda); Dinero f = new Dinero(d.ValorEn(nuevamoneda), nuevamoneda); return(f); }
/// <summary> /// Escribe la cantidad representada en la moneda dada. /// </summary> /// <param name="">Tipo de moneda a la que se quiere pasar la moneda.</param> /// <returns>Cadena con la cantidad de dinero en la moneda dada (con símbolo incluido).</returns> public string ToString(TipoMoneda nuevamoneda) { // le pasamos un objeto Dinero (cantidad, moneda) Dinero d = new Dinero(this.cantidad, this.moneda); Dinero f = new Dinero(d.ValorEn(nuevamoneda), nuevamoneda); // dinero convertido return(f.ToString()); }
/// <summary> /// Resta de dos cantidades de dinero, sin importar si están expresadas en la misma moneda. /// </summary> /// <param name="d1">Primera cantidad de dinero.</param> /// <param name="d2">Segunda cantidad de dinero.</param> /// <returns>Resta de ambas cantidades en la moneda de la primera.</returns> public static Dinero operator -(Dinero d1, Dinero d2) { Dinero resta, d2convertido; if (d1.moneda == d2.moneda) { resta = new Dinero(d1.cantidad - d2.cantidad, d1.moneda); } else { d2convertido = d2.ConvierteEn(d1.moneda); resta = new Dinero(d1.cantidad - d2convertido.cantidad, d1.moneda); } return(resta); }
// Operadores /// <summary> /// Suma dos cantidades de dinero, sin importar si están expresadas en la misma moneda.. /// </summary> /// <param name="d1">Primera cantidad de dinero.</param> /// <param name="d2">Segunda cantidad de dinero.</param> /// <returns>Suma de ambas cantidades en la moneda de la primera.</returns> public static Dinero operator +(Dinero d1, Dinero d2) { Dinero suma, d2convertido; if (d1.moneda == d2.moneda) { suma = new Dinero(d1.cantidad + d2.cantidad, d1.moneda); } else // son diferentes monedas { d2convertido = d2.ConvierteEn(d1.moneda); suma = new Dinero(d1.cantidad + d2convertido.cantidad, d1.moneda); } return(suma); }
static void Main(string[] args) { Console.OutputEncoding = Encoding.UTF8; // cambio la codificación de la consola para que me acepte el símbolo "€" /* * WebClient wc = new WebClient(); // prueba de webclient * * string pagina; * pagina = wc.DownloadString("https://www.x-rates.com/calculator/?from=EUR&to=USD&amount=1"); // guardo el código fuente de la web */ // PRUEBAS (las que yo quiera) int opcion; Console.WriteLine("MENÚ"); Console.WriteLine("===="); Console.WriteLine(); Console.WriteLine("1.- Actualiza el cambio de una moneda"); // Prueba ActualizaCambio y DevuelveMoneda Console.WriteLine("2.- Muestra mi dinero bonito"); // Prueba ToString() Console.WriteLine("3.- Muestra mi dinero en otra moneda"); // Prueba ValorEn y ToString(TipoMoneda) Console.WriteLine("4.- Conversor de moneda"); // Prueba ConvierteEn y ToString() Console.WriteLine("5.- Suma dinero"); // Prueba el operador suma Console.WriteLine(); // Me falta probar otros operadores y cosillas menos importantes xD Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("20.- Obtén el cambio actualizado de una moneda"); // Prueba ActualizaListaInternet opcion = int.Parse(Console.ReadLine()); switch (opcion) { case 1: { int idmoneda; TipoMoneda tipo; decimal nuevocambio; Console.WriteLine("¿De qué moneda quieres actualizar el cambio? (0: euro, 1: dólar, 2: yen)"); string[] simbolos = { "€", "$", "¥" }; idmoneda = int.Parse(Console.ReadLine()); // guardo el código de la moneda tipo = (TipoMoneda)idmoneda; // convierto el código de la moneda en el tipo de moneda Moneda m = Dinero.DevuelveMoneda(tipo); // guardo en "m" los valores de la moneda elegida (ej. yen) //m.simbolo Console.WriteLine("El cambio actual del " + tipo + " es de: " + m.CambioEuro + " euros"); Console.WriteLine("¿Cuál es la nueva cantidad de euros que nos darán al cambio por 1 " + simbolos[idmoneda] + "?"); nuevocambio = decimal.Parse(Console.ReadLine()); Dinero.ActualizaCambio(tipo, nuevocambio); m = Dinero.DevuelveMoneda(tipo); // debo volver a guardar los datos del yen en "m" porque si no cogerá el cambio que tenía guardado de antes Console.WriteLine(); Console.WriteLine("El cambio actual del " + tipo + " es de: " + m.CambioEuro + " euros"); } break; case 2: { decimal cantidad; int moneda; TipoMoneda tipo; Console.WriteLine("¿Cuánto dinero tienes? (Dame un número.)"); cantidad = decimal.Parse(Console.ReadLine()); Console.WriteLine("¿En qué moneda lo tienes? (0: euro, 1: dólar, 2: yen)"); moneda = int.Parse(Console.ReadLine()); tipo = (TipoMoneda)moneda; // meto el 0/1/2 en el enumerado y saco la moneda Dinero d = new Dinero(cantidad, tipo); Console.WriteLine("Tienes: " + d.ToString()); } break; case 3: { decimal cantidad; int moneda, monedafinal; TipoMoneda tipo, tipofinal; Console.WriteLine("¿Cuánto dinero tienes? (Dame un número.)"); cantidad = decimal.Parse(Console.ReadLine()); Console.WriteLine("¿En qué moneda lo tienes? (0: euro, 1: dólar, 2: yen)"); moneda = int.Parse(Console.ReadLine()); tipo = (TipoMoneda)moneda; Dinero d = new Dinero(cantidad, tipo); Console.WriteLine("¿En qué moneda lo quieres ver? (0: euro, 1: dólar, 2: yen)"); monedafinal = int.Parse(Console.ReadLine()); tipofinal = (TipoMoneda)monedafinal; Console.WriteLine("Tienes: " + d.ToString(tipofinal)); } break; case 4: { Dinero d; decimal cantidadinicial, cantidadfinal; int monedainicial, monedafinal; TipoMoneda tipoinicial, tipofinal; Console.WriteLine("¿Cuánto dinero tienes? (Dame un número.)"); cantidadinicial = decimal.Parse(Console.ReadLine()); Console.WriteLine("¿En qué moneda lo tienes? (0: euro, 1: dólar, 2: yen)"); monedainicial = int.Parse(Console.ReadLine()); tipoinicial = (TipoMoneda)monedainicial; d = new Dinero(cantidadinicial, tipoinicial); Console.WriteLine("Tienes: " + d.ToString()); Console.WriteLine("¿A qué moneda lo quieres convertir? (0: euro, 1: dólar, 2: yen)"); monedafinal = int.Parse(Console.ReadLine()); tipofinal = (TipoMoneda)monedafinal; cantidadfinal = d.ValorEn(tipofinal); d = d.ConvierteEn(tipofinal); // guardo el dinero convertido Console.WriteLine("Tienes: " + d.ToString()); } break; case 5: { // Guardo las dos cantidades de dinero con su moneda Dinero d1, d2, dfinal; decimal cantidad1, cantidad2; int moneda1, moneda2; TipoMoneda tipo1, tipo2; Console.WriteLine("Dime, por este orden, cantidad de dinero, moneda de la primera hucha y cantidad de dinero y moneda de la segunda."); Console.WriteLine("Para indicar la moneda utiliza el siguiente código: (0: euro, 1: dólar, 2: yen)"); cantidad1 = decimal.Parse(Console.ReadLine()); moneda1 = int.Parse(Console.ReadLine()); tipo1 = (TipoMoneda)moneda1; cantidad2 = decimal.Parse(Console.ReadLine()); moneda2 = int.Parse(Console.ReadLine()); tipo2 = (TipoMoneda)moneda2; d1 = new Dinero(cantidad1, tipo1); d2 = new Dinero(cantidad2, tipo2); // Las sumo dfinal = d1 + d2; Console.WriteLine("Tu saldo es de: " + dfinal.ToString()); } break; case 20: { Dinero.ActualizaListaInternet(); // actualizo el cambio Moneda t = Dinero.DevuelveMoneda(TipoMoneda.Dolar); // guardo una moneda en mi variable Console.WriteLine("1€ son " + t.CambioEuro + " dólares."); } break; default: break; } Console.ReadKey(); }