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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Tengo un problema con eclipse
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Tengo un problema con eclipse  (Leído 4,000 veces)
JackFiresoul

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Tengo un problema con eclipse
« en: 2 Octubre 2011, 01:39 am »

bueno tngo un problema con la ejecucion de un programa que he echo y no consigo solucionarlo. Si alguien me puede ayudar se lo agradeceria mucho, llevo como una semana pensando en esto y no hay manera (tambien es cierto que llevo usando eclipse solo unas 2 semanas y que antes no he tocado programacion para nada).
Bueno aqui esta el codigo del programa:



/*Realizar un programa, que proporcionando una cantidad de euros, te diga cual es la menor cantidad de billetes y monedas que se debe usar para cubrir dicha cantidad de euros*/
public class ejercicio_1 {   

      public static void main(String[] args) {   
   
      double x = 888.88/*cantidad de euros proporcionada*/, z, e, c;
      z= x-(int)x;
      e = (int) x;
      c = z * 100;      
      
      int a1, a2, b1, b2, c1, c2, d1, d2, e1, e2, f1, f2, g1, g2, h1, h2, i1;
      a1 = (int) e / 500;
      a2 = (int) e % 500;
      b1 = a2 / 200;
      b2 = a2 % 200;
      c1 = b2 / 100;
      c2 = b2 % 100;
      d1 = c2 / 50;
      d2 = c2 % 50;
      e1 = d2 / 20;
      e2 = d2 % 20;
      f1 = e2 / 10;
      f2 = e2 % 10;
      g1 = f2 / 5;
      g2 = f2 % 5;
      h1 = g2 / 2;
      h2 = g2 % 2;
      i1 = h2 / 1;
     //billetes y monedas de euro

      int j1, j2, k1, k2, l1, l2, m1, m2, n1, n2, ñ;
      j1 = (int) c / 50;
      j2 = (int) c % 50;
      k1 = j2 / 20;
      k2 = j2 % 20;
      l1 = k2 / 10;
      l2 = k2 % 10;
      m1 = l2 / 5;
      m2 = l2 % 5;
      n1 = m2 / 2;
      n2 = m2 % 2;
      ñ = n2 / 1;
      //centimos

      System.out.println("en " + x + " euros hay:");
      System.out.println(a1 + " billetes de 500€");
      System.out.println(b1 + " billetes de 200€");
      System.out.println(c1 + " billetes de 100€");
      System.out.println(d1 + " billetes de 50€");
      System.out.println(e1 + " billetes de 20€");
      System.out.println(f1 + " billetes de 10€");
      System.out.println(g1 + " billetes de 5€");
      System.out.println(h1 + " monedas de 2€");
      System.out.println(i1 + " monedas de 1€");
      System.out.println(j1 + " monedas de 50 cent");
      System.out.println(k1 + " monedas de 20 cent");
      System.out.println(l1 + " monedas de 10 cent");
      System.out.println(m1 + " monedas de 5 cent");
      System.out.println(n1 + " monedas de 2 cent");
      System.out.println("y " +ñ +" monedas de 1 cent");
   }

}



y aqui esta el resultado:



en 888.88 euros hay:
1 billetes de 500€
1 billetes de 200€
1 billetes de 100€
1 billetes de 50€
1 billetes de 20€
1 billetes de 10€
1 billetes de 5€
1 monedas de 2€
1 monedas de 1€
1 monedas de 50 cent
1 monedas de 20 cent
1 monedas de 10 cent
1 monedas de 5 cent
1 monedas de 2 cent
y 0 monedas de 1 cent


como veis me quita un centimo, pero eso solo pasa con algunas cifras, por ejemplo, con 888,70, me lo da bien, y me gustaria solucionar el problema, por favor ayudarme o me volvere loco.

Pd: creo que el problema esta en el redondeo de decimales, que no lo haga bien tras la separacion de la parte entera y la decimal.

Muchas gracias por adelantado


En línea

JackFiresoul

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Tengo un problema con eclipse
« Respuesta #1 en: 2 Octubre 2011, 02:14 am »

una cosa, acabo de leer unos temas y me he dado cuenta que, no he puesto de mi parte al poner, por ejemplo "a1" en vez de "quinientos" en el "int" y en el resto de las cosas, y tambien siento no haber enmarcado los codigos y los resultados, pero es que no se como hacerlo y tampoco se como hacer que dandole por ejemplo pestaña (codigo) aparezca el codigo, (para asi reducir el tamaño del mensaje).


En línea

markosliveup

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Re: Tengo un problema con eclipse
« Respuesta #2 en: 2 Octubre 2011, 03:23 am »

estoy tan aburrido que me puse a verlo jaja

mira el problema creo (pobre un solo numero) es que en la parte en que asignas el valor a n1, m2 vale 2. Entonces en la asinacion de n2 cuando calcula el resto da 0. tendrias que dividir..
En línea

JackFiresoul

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Tengo un problema con eclipse
« Respuesta #3 en: 2 Octubre 2011, 03:45 am »

El caso es que me da el mismo problema si pongo,por ejemplo: x=#.80

(Pongo # porque la parte euro no me da errores sin importar la cifra)

En el caso de #.80, me pone una de 50 cent, una de 20 cent, (se salta la de 10 cent) y me pone una de 5 cent y 2 de 2 cent
En total 79 cent en vez de 80, y hay el resto no llega a ser igual a 2, y de todos modos m2 en el caso anterior valia 3, el resto de 8/5 es 3 o al menos eso deberia dar si hacemos todas las cuentas a mano, con esas mismas variables, asi que creo que el problema esta en z=x-(int)x, que no da los decimales que aparecen sino por ejemplo, 0.87999999955, en ese caso la variable c es 87 en vez de 88 como deberia ser y hay esta la raiz del problema, creo, pero el caso es que no se como solucionarlo si me podeis ayudar a solucionarlo estaria eternamente

agradecido con el que me haya ayudado

de todas formas muchas gracias por el intento XD
En línea

s00rk

Desconectado Desconectado

Mensajes: 195



Ver Perfil
Re: Tengo un problema con eclipse
« Respuesta #4 en: 2 Octubre 2011, 04:25 am »

Bueno aqui te dejo un codigo que hice hace tiempo para esto, llamado morraya o asi le decimos aca jeje

Código
  1. public class MORRAYA
  2. {
  3. public static void main(String[] args)
  4. {
  5.  String nombre = read.data("Empleado:");
  6.  int pago = read.dataInt("Total a Pagar:");
  7.  String [] m = morraya0(pago);
  8.  imprimir(nombre,pago,m);
  9. }
  10.  
  11. private static String[] morraya0(int pago)
  12. {
  13.  int[] c = {1000,500,200,100,50,20,10,5,2,1};
  14.  String[] m = new String[c.length];
  15.  int resto = 0;
  16.  for(int d=0;d<c.length;d++)
  17.  {
  18.   resto = (int)pago/c[d];
  19.   m[d] = resto + " Billetes de $" + c[d] + ".00";
  20.   pago = pago-(resto*c[d]);
  21.  }
  22.  return m;
  23. }
  24.  
  25. private static void imprimir(String nombre,int pago,String[] m)
  26. {
  27.  System.out.println("PARA PAGARLE A " + nombre + " $" + pago + " SE NECESITA:");
  28.  for(String s:m)
  29.   System.out.println(s);
  30. }
  31. }

Espero te sirva si aun no logras darte de una idea de como adaptarlo a tu codigo ahi avisas y te hecho una mano n_n

Saludos!

P.D. En mi codigo puse que todos son billetes, aunque claro no hay billetes de 10,5,2,1 xD ahi solo hacemos una comprobacion antes de agregar el mensaje al vector jeej y ya ponemos moneda en vez de billetes xD
« Última modificación: 2 Octubre 2011, 04:28 am por s00rk » En línea

JackFiresoul

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Tengo un problema con eclipse
« Respuesta #5 en: 2 Octubre 2011, 04:48 am »

muchas gracias, s00rk
no se si el codigo me funcionara, pues antes de mirar el foro de nuevo se me ha ocurrido una forma usando las pocas herramientas que aunque seguramente mi codigo sea mucho mas largo que el tuyo XD

bueno aqui esta ( he cambiado las variables para que sean mas facieles de entender XD):
Citar
/*Realizar un programa, que proporcionando una cantidad de euros, te diga cual es la menor cantidad de billetes y monedas que se debe usar para cubrir dicha cantidad de euros*/

public class ejercicio_1 {
   
      public static void main(String[] args) {
      
      double x = 888.88, z, e, c;
      z= x-(int)x;
      e = (int) x;
      c = z * 100;
      
      
      int quinientos1, quinientos2, doscientos1, doscientos2, cien1, cien2, cincuenta1, cincuenta2, veinte1, veinte2, diez1, diez2, cinco1, cinco2, dos1, dos2, uno1;
      quinientos1 = (int) e / 500;
      quinientos2 = (int) e % 500;
      doscientos1 = quinientos2 / 200;
      doscientos2 = quinientos2 % 200;
      cien1 = doscientos2 / 100;
      cien2 = doscientos2 % 100;
      cincuenta1 = cien2 / 50;
      cincuenta2 = cien2 % 50;
      veinte1 = cincuenta2 / 20;
      veinte2 = cincuenta2 % 20;
      diez1 = veinte2 / 10;
      diez2 = veinte2 % 10;
      cinco1 = diez2 / 5;
      cinco2 = diez2 % 5;
      dos1 = cinco2 / 2;
      dos2 = cinco2 % 2;
      uno1 = dos2 / 1;
      int cincuenta3, cincuenta4, veinte3, veinte4, diez3, diez4, cinco3, cinco4, dos3, dos4, uno2;
      
      cincuenta3 = (int) c / 50;
      cincuenta4 = (int) c % 50;
      veinte3 = cincuenta4 / 20;
      veinte4 = cincuenta4 % 20;
      diez3 = veinte4 / 10;
      diez4 = veinte4 % 10;
      cinco3 = diez4 / 5;
      cinco4 = diez4 % 5;
      dos3 = cinco4 / 2;
      dos4 = cinco4 % 2;
      uno2= dos4/ 1;
      System.out.println("en " + x + " euros hay:");
      double j3,k3,l3,m3,n3,ñ2, ñ1;
      j3=cincuenta3;k3=veinte3;l3=diez3;m3=cinco3;n3=dos3;ñ2=uno2;
      ñ1=((j3*50)+(k3*20)+(l3*10)+(m3*5)+(n3*2)+(ñ2*1))/100;
      if ((ñ1+e)<x){
         x=x+0.01;
         z= x-(int)x;
         c = z * 100;
            
         cincuenta3 = (int) c / 50;
         cincuenta4 = (int) c % 50;
         veinte3 = cincuenta4 / 20;
         veinte4 = cincuenta4 % 20;
         diez3 = veinte4 / 10;
         diez4 = veinte4 % 10;
         cinco3 = diez4 / 5;
         cinco4 = diez4 % 5;
         dos3 = cinco4 / 2;
         dos4 = cinco4 % 2;
         uno2 = dos4 / 1;
         }
      else{}
      
      System.out.println(quinientos1 + " billetes de 500€");
      System.out.println(doscientos1 + " billetes de 200€");
      System.out.println(cien1 + " billetes de 100€");
      System.out.println(cincuenta1 + " billetes de 50€");
      System.out.println(veinte1 + " billetes de 20€");
      System.out.println(diez1 + " billetes de 10€");
      System.out.println(cinco1 + " billetes de 5€");
      System.out.println(dos1 + " monedas de 2€");
      System.out.println(uno1 + " monedas de 1€");
      System.out.println(cincuenta3 + " monedas de 50 cent");
      System.out.println(veinte3 + " monedas de 20 cent");
      System.out.println(diez3 + " monedas de 10 cent");
      System.out.println(cinco3 + " monedas de 5 cent");
      System.out.println(dos3 + " monedas de 2 cent");
      System.out.println("y " +uno2+" monedas de 1 cent");
   }

}
el resultado de esta forma ya me da bien, he posteado para agradecer la ayuda y para proporcionar alguna ayuda a algun novato como yo que no entienda para que sirven la mitad de las cosas XD
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema: Eclipse y Gráficos
Programación C/C++
tanisdlj 0 1,621 Último mensaje 5 Mayo 2010, 13:40 pm
por tanisdlj
Problema sencillo en eclipse
Java
usernovell 2 2,026 Último mensaje 15 Marzo 2013, 17:27 pm
por 1mpuls0
[C++] Problema con bucle en Eclipse
Programación C/C++
HijoDePuta 4 2,779 Último mensaje 9 Agosto 2013, 20:14 pm
por HijoDePuta
Problema Eclipse
Java
Tronos154 8 3,748 Último mensaje 30 Enero 2014, 17:26 pm
por ~ Yoya ~
Problema con eclipse c/c++
Programación C/C++
zaphiel 7 6,552 Último mensaje 4 Diciembre 2014, 17:13 pm
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines