示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }
示例#4
0
        /// <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());
        }
示例#5
0
        /// <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);
        }
示例#6
0
        // 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);
        }
示例#7
0
        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();
        }