Example #1
0
        /**
         * @param Billete b
         */
        public void Agregar(Dinero b) {
            // Primer opcion: Si el elemento a ingresar es igual a uno de la coleccion, se unifica
            for (int i = 0; i < this.billetes.Count; i++)
            {
                if (Dinero.EsSimilar(billetes[i], b))
                {
                    this.billetes[i] = this.billetes[i] + b;
                    return;
                }
            }

            // Segunda opcion: Se inserta en la posicion donde exista un valor inferior
            foreach (Dinero billete in billetes)
            {
                if (b.ValorDenominacion() > billete.ValorDenominacion())
                {
                    int posicion;
                    posicion = billetes.IndexOf(billete);
                    billetes.Insert(posicion, b);
                    return;
                }
            }
            
            billetes.Add(b);
        }
Example #2
0
        static void Main(string[] args)
        {
            Dinero c1 = new Dinero(Dinero.ETipoMoneda.LEMPIRAS, 
                Dinero.EDenominacion.CIEN, 2);
            Dinero c2 = new Dinero(Dinero.ETipoMoneda.LEMPIRAS, 
                Dinero.EDenominacion.QUINIENTOS, 3);
            Dinero c3 = new Dinero(Dinero.ETipoMoneda.LEMPIRAS, 
                Dinero.EDenominacion.CIEN, 1);

            Caja caja = new Caja();
            caja.Agregar(c1);
            caja.Agregar(c2);
            caja.Agregar(c3);

            Console.WriteLine(caja);

            Console.WriteLine("Retiro de L 150.00");
            caja.Quitar(150);

            Console.WriteLine(caja);

            Console.ReadKey(true);
        }
Example #3
0
 public static bool EsSimilar(Dinero a, Dinero b)
 {
     return (a.tipoMoneda == b.tipoMoneda && a.denominacion == b.denominacion);
 } 
Example #4
0
        /**
         * @param decimal monto
         */
        public void Quitar(decimal monto)
        {
            int cantidad;
            decimal valorBillete;
            decimal resultado;
            Hashtable ht = new Hashtable();

            resultado = monto;

            for (int i = 0; i < billetes.Count; i++)
            {
                cantidad = 0;
                valorBillete = billetes[i].ValorDenominacion();

                if (resultado / valorBillete >= 1M)
                {
                    cantidad = (int)(resultado / valorBillete);
                    resultado -= (valorBillete * cantidad);

                    // Determinar si la existencia de billetes corresponde a la solucion
                    if (billetes[i].Cantidad < cantidad)
                    {
                        return;
                    }
                    else
                    {
                        ht.Add(i, cantidad);
                    }
                }
            }

            // Verificar resultado valido
            if (resultado == 0)
            {
                foreach (int i in ht.Keys)
                {
                    cantidad = (int) ht[i];
                    Dinero dinero = new Dinero(billetes[i].TipoMoneda, billetes[i].Denominacion, cantidad);
                    billetes[i] = billetes[i] - dinero;
                }
            }
        }