Autor Tema: Ejemplos y ejercicio matemática básica java (CU00644B)  (Leído 7894 veces)

aleexx1724

  • Principiante
  • **
  • Mensajes: 73
  • Ayuda con Java
    • Ver Perfil
Ejemplos y ejercicio matemática básica java (CU00644B)
« en: 07 de Octubre 2014, 11:42 »
estoy quebrándome la cabeza con este problema, sé que mi ejercicio está mal pero aún así lo pongo , no quise buscar otros temas ya resueltos ya que preferí intentar  espero me ayuden ya que todo esta bien pero al hacer (2.55,2) meda otro resultado al 255.Nota el System.out.println(); lo puse para ver el procedimiento
saludos



Código: [Seleccionar]
public class MultiplicadorDieces{

    public MultiplicadorDieces(){
    // Constructor vacio
    }

    public double MultiplicarDieces(double n, int m){
    double resultado=10;
    for(int i=1; i<m;i++){
    resultado=resultado*10;
    System.out.println(resultado);
    }
   
    resultado=resultado*n;
   
    return resultado;
    }

}
« Última modificación: 07 de Octubre 2014, 19:16 por Alex Rodríguez »
megustaria aprender a programar en java tengo pocotiempo con esto de la programacion pero me gusta  mucho ,estoy buscando amig@s que  tambien esten aprendiendo o que sepan y puedan enseñar online ,
saludos

lobo

  • Sin experiencia
  • *
  • Mensajes: 11
    • Ver Perfil
Re:Ejemplos y ejercicio. (CU00644B)
« Respuesta #1 en: 07 de Octubre 2014, 16:29 »
Hola aleexx1724.

El código es correcto... y el resultado también: cuando pones MultiplicarDieces(2.55,2) lo que debes obtener es 2.55 multiplicado por 10 dos veces, es decir, 2.55 x 100 = 255. Es simplemente 255 expresado en notación científica.

Me he sentido obligado moralmente a responderte aunque yo no soy soy experto en java, pero sí en Matemáticas, pues soy profe de Mates.

A todos nos ocurre que en algún momento nos obcecamos y no conseguimos ver algo que está muy claro. En estos casos te recuerdo el consejo de Einstein: "Si deseas resultados diferentes no hagas siempre lo mismo", o sea, no pienses solo que hay un error paradójico de programación, piensa también sí realmente existe ese error.

Un cordial saludo.

lobo

  • Sin experiencia
  • *
  • Mensajes: 11
    • Ver Perfil
Re:Ejemplos y ejercicio matemática básica java (CU00644B)
« Respuesta #2 en: 08 de Octubre 2014, 14:56 »
Disculpa Aleexx1724, te contesté sin fijarme bien ni analizar tu código (interpreté que obtenías como resultado 255 y no era eso lo que esperabas).

Un código correcto es:

public class MultiplicadorDieces{

    public MultiplicadorDieces(){
    // Constructor vacio
    }

    public double MultiplicarDieces(double n, int m){
    double resultado=n;
    for(int i=1; i<=m;i++){
    resultado=resultado*10;   
    }
   
    System.out.println(resultado);
    return resultado;
    }

}


En tu código hay varios errores; los pongo en negrita y en rojo y los comento a continuación:

public class MultiplicadorDieces{

    public MultiplicadorDieces(){
    // Constructor vacio
    }

    public double MultiplicarDieces(double n, int m){
    double resultado=10;
    for(int i=1; i<m;i++){
    resultado=resultado*10;
    System.out.println(resultado);
    }
   
    resultado=resultado*n;
   
    return resultado;
    }

}

ERROR 1: double resultado=10;

Si inicializas resultado con 10, para n = 1 el bucle no deberia ejecutarse y para n = 0 no tendrías solución correcta. Lo lógico parece ser inicializar con n, que es el valor primitivo del número que vas a multiplicar por dieces.

ERROR 2º: for(int i=1; i<m;i++)

Inicializando resultado como resultado = n, el número de ciclos que debe ejecutar el bucle debe ser m, pero si pones el límite superior del índice i como i<m tienes un ciclo menos, o sea, para m = 2 solo multiplaría una vez por 10; has de poner i <= m.


ERROR 3º:

 resultado=resultado*n;

Esta línea sobra si se ha incializado resultao = n (que es lo correcto).

ERROR 4º:

System.out.println(resultado);

Esta instrucción, que has escrito a modo de debugger, debería estar al final de la clase y no dentro del bucle (en ese caso solo obtienes múltiplos de diez pero no el resultado).

Para ver por qué no se obtiene el resultado esperado lo que debes hacer es e¡seguir el flujo del programa, (como si tú mismo fueses el programa), observando qué valor tiene el resultado en cada paso.


Saludos.

aleexx1724

  • Principiante
  • **
  • Mensajes: 73
  • Ayuda con Java
    • Ver Perfil
Re:Ejemplos y ejercicio matemática básica java (CU00644B)
« Respuesta #3 en: 08 de Octubre 2014, 20:23 »
si Lobo creo que me complique mucho el codigo muchas gracias por la aclaracioon

Código: [Seleccionar]
public class MultiplicadorDieces{

    public MultiplicadorDieces(){
    // Constructor vacio
    }

    public double MultiplicarDieces(double n, int m){
    double resultado=n;
    for(int i=1; i<=m;i++){
    resultado=resultado*10;
   
    }
     System.out.println(resultado);
   
    return resultado;
    }

}
megustaria aprender a programar en java tengo pocotiempo con esto de la programacion pero me gusta  mucho ,estoy buscando amig@s que  tambien esten aprendiendo o que sepan y puedan enseñar online ,
saludos

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:Ejemplos y ejercicio matemática básica java (CU00644B)
« Respuesta #4 en: 08 de Octubre 2014, 20:53 »
Hola alex

Tu código funciona bien. Hace lo que se pide en el ejercicio.

El ejercicio que he hecho yo, es distinto pero da el mismo resultado que tu código.

Inciso
Me he puesto a pensar, y digo: Yo uso BlueJ para hacer los ejercicios. Si usas otro IDE, en estos ejercicios simples no se obtiene la misma respuesta.
Habría que incluir más código para mostrar el resultado final (que tu no muestras en tu mensaje)
Y estos ejercicios, están diseñados para practicarlos en BlueJ por que es un Entorno de Desarrollo Integrado pensado para aprendizaje de java.


Lo que te pasa de que no te gusta, o no entiendes lo que hace tu programa, me ha pasado a mi otras veces.

Y la solución que encontré, fue: Repasar el código punto por punto hasta comprender cada línea para finalmente tener claro el conjunto del código, mas que nada para descansar el coco, y también para poder aplicar lo que has hecho en otros programas.

Y es que tu clase tienen código enrevesado, es difícil de seguir. Supongo que cada persona, ve el problema desde un lado y con ese punto de vista le busca la solución.

Si esta solución se hace difícil, intenta otro punto de vista para solucionar el problema. Generalmente leyendo las lecciones del curso, se dan pistas y se muestra código nuevo para nosotros que deberíamos entender (y sino lo preguntamos) para aplicar esos conocimientos en nuestros programas.

Te incluyo mi código. Repito, para los mismos parámetros da lo mismo tu código y el mio (en BlueJ)

Código: [Seleccionar]
public class MultiplicadorDieces {

    public MultiplicadorDieces() {
        // nada
    } // Fin del constructor MultiplicadorDieces

    // Multiplica <factor> por (10 elevado a <potencia>)
    public double  multiplicarPorDieces (double factor, int potencia) {
        return factor * potenciaDeDiez ( potencia ) ;
    }
   
    // Eleva 10 a la potencia del parámetro <valorPotencia>
    private int potenciaDeDiez ( int valorPotencia ) {
        int resultado = 1;
        for ( int i = 1; i <= valorPotencia; i++ ) {
            resultado = resultado * 10;
        }
        return resultado;
    }
} // Fin de la clase MultiplicadorDieces
Saludos

aleexx1724

  • Principiante
  • **
  • Mensajes: 73
  • Ayuda con Java
    • Ver Perfil
Re:Ejemplos y ejercicio matemática básica java (CU00644B)
« Respuesta #5 en: 09 de Octubre 2014, 18:11 »
Hola toni_apr si estoy siguiendo el curso con Bluej y de sale bien el resultado
creo el objeto y le doy los valores alos parametros y el resultado es el mismo que indica el ejercicio
eso deque el codigo esta enredado  hahhahhah sorry la verdad si me quebro mucho la cabeza este ejercicio
saludos
megustaria aprender a programar en java tengo pocotiempo con esto de la programacion pero me gusta  mucho ,estoy buscando amig@s que  tambien esten aprendiendo o que sepan y puedan enseñar online ,
saludos

aleexx1724

  • Principiante
  • **
  • Mensajes: 73
  • Ayuda con Java
    • Ver Perfil
Re:Ejemplos y ejercicio matemática básica java (CU00644B)
« Respuesta #6 en: 24 de Diciembre 2014, 11:20 »
hola toni_apr tube que comenzar el curso ,y eh llegado a este ejercicio pero tu ejemplo y tu codigo nome da loque el ejercicio me pide, el resultado que me da es  254.999999  y el ejercicio dice que deve de set 255. saludos

Código: [Seleccionar]
public class MultiplicadorDieces {

    public MultiplicadorDieces() {
        // nada
    } // Fin del constructor MultiplicadorDieces

    // Multiplica <factor> por (10 elevado a <potencia>)
    public double  multiplicarPorDieces (double factor, int potencia) {
        return factor * potenciaDeDiez ( potencia ) ;
    }
   
    // Eleva 10 a la potencia del parámetro <valorPotencia>
    private int potenciaDeDiez ( int valorPotencia ) {
        int resultado = 1;
        for ( int i = 1; i <= valorPotencia; i++ ) {
            resultado = resultado * 10;
        }
        return resultado;
    }
} // Fin de la clase MultiplicadorDieces
megustaria aprender a programar en java tengo pocotiempo con esto de la programacion pero me gusta  mucho ,estoy buscando amig@s que  tambien esten aprendiendo o que sepan y puedan enseñar online ,
saludos

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
Re:Ejemplos y ejercicio matemática básica java (CU00644B)
« Respuesta #7 en: 24 de Diciembre 2014, 14:13 »
 Hola aleexx1724!

Este problema es frecuente a la hora de trabajar con decimales, debido a la precisión de los ordenadores con relación a números decimales.

Nosotros pensamos en un resultado (2.55), pero la forma del ordenador hacer los cálculos nos devuelve otro resultado  (254.99999999999997)

Es algo que lleva tiempo conocer y entender. Para solucionar este problema, disponemos del método
round(double a); de la clase Math.

El método seria el siguiente:
Código: [Seleccionar]
//metodo que devuelve el resultado de multiplicar el valor de la variable base por el resultado de elevar 10 al valor de la variable exponente
    public double multiplicadorPorDieces(double base, int exponente){
        int resultado = 1;
        for(int i=1; i<=exponente; i++){resultado = resultado * 10;}
        return Math.round(base * resultado * 100000) / 100000;
    }

Mas adelante (a partir de la entrega CU00645B) comenzaras a familiarizarte con lo que es el api de java, sus clases y métodos disponible para "facilitar" el trabajo a la hora de programar, de hay sale el método Math.round(double a);

Saludos!
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".