elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Problema de Cambio de monedas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema de Cambio de monedas  (Leído 3,045 veces)
GAticoxx

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Problema de Cambio de monedas
« en: 4 Noviembre 2017, 04:09 am »

Buenas tardes, necesito algun metodo para limitar la cantidad de monedas que tenga para dar cambio, partiendo del siguiente codigo en voraces.
//Codigo
package cambio;
public class Cambio {

    public void Voraz(int s[], double v[], double cambio) {
        double x;
        int i = 0;

        while (!Solucion(s, v, cambio) && i < s.length) {
            //Seleccionar moneda
            x = v;
            if (Factible(s, v, cambio, x)) //inserta moneda
            {
                s++;
            } else //rechaza moneda
            {
                i++;
            }
        }
    }

    public boolean Solucion(int s[], double v[], double cambio) {
        double suma = 0.0;
        for (int i = 0; i < s.length; i++) {
            suma += s * v;
        }
        suma = Math.rint(suma * 100) / 100;
        if (suma == cambio) {
            return true;
        } else {
            return false;
        }
    }

    public boolean Factible(int s[], double v[], double cambio, double x) {
        double suma = 0.0;
        for (int i = 0; i < s.length; i++) {
            suma += s * v;
        }
        suma = suma + x;
        suma = Math.rint(suma * 100) / 100;
        if (suma <= cambio) {
            return true;
        } else {
            return false;
        }
    }

}
package cambio;

import java.util.Scanner;
public class DarCambio {

    public static void main(String[] args) {
        int s[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
        double v[] = {200, 100, 50, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1, 0.05, 0.01};

        Scanner entrada = new Scanner(System.in);
        Cambio moneda = new Cambio();
        double vuelto;

        System.out.print("Ingrese cambio: ");
        vuelto = entrada.nextDouble();

        moneda.Voraz(s, v, vuelto);
       
       
        if (moneda.Solucion(s, v, vuelto)) {
            for (int i = 0; i < s.length; i++) {
                if (s > 0 && v > 9) {
                    System.out.printf("%d Billetes de %.2f soles\n", s, v);
                } else if (s > 0 && v < 10) {
                    System.out.printf("%d Monedas de %.2f soles\n", s, v);
                }
            }
        } else {
            System.out.println("No hay solucion");
        }

    }
}


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Acertijo Monedas « 1 2 »
Desafíos - Wargames
TheMaker 12 15,058 Último mensaje 17 Febrero 2011, 20:48 pm
por likinhell
Problema cambio de mac
GNU/Linux
Usur 0 2,123 Último mensaje 22 Agosto 2014, 18:59 pm
por Usur
Cambio en billetes y monedas en C++
Programación C/C++
AxelP 7 14,374 Último mensaje 2 Octubre 2014, 15:44 pm
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines