Java - multiplicacion

 
Vista:

multiplicacion

Publicado por anthony (1 intervención) el 06/11/2018 02:09:53
buenas noches amigos necesito que me ayuden con un problema q puede ser muy facil para ustedes como expertos
necesito ingresar dos numeros y q el programa me muestre los multiplos que estan entre esos dos valores y me multiplique el primero con el ultimo porfa ayudenme
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Luis Pablo
Val: 19
Ha disminuido su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

multiplicacion

Publicado por Luis Pablo (9 intervenciones) el 06/11/2018 06:59:29
Buenas amigo!
jajaja soy estudiante y justamente hace unos días estaba practicando con eso, te recomiendo el uso de ciclos, te dejo el código que hice yo para que lo analices, no se si es exactamente lo que necesitas....(esto es en Netbeans)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.Scanner;
public class entrenaMultiplicacion {
    public static void main (String[] args){
        int i;
        int j;
 
        Scanner leer = new Scanner(System.in);
        System.out.println("Dame primer número");
        i=leer.nextInt();
 
        System.out.println("Dame segundo número");
        j=leer.nextInt();
 
        for (i=i; i<=j; i++){
 
            int r=i*j;
            System.out.println(i+"*"+j+"="+r);
        }
    }
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

multiplicacion

Publicado por Kabuto (1378 intervenciones) el 06/11/2018 14:05:25
Hola.
Bueno, no es dificil, pero tampoco es tan fácil. Sobre todo porque, como suele ser muy habitual, el enunciado no es muy exacto.
Dice pedir dos numeros, llamemosles n1 y n2, y buscar multiplos entre la secuencia de números que hay entre ellos.
Vale, pero...¿multiplos de quién? ¿De n1? ¿De n2? ¿De otro número distinto?

Yo, supongo que habrá que buscar multiplos del número mayor que nos han dado. Así que para facilitar las cosas, vamos a suponer que en n2 siempre nos van a dar el numero mayor.
Supongamos que nos dan un 9 y un 200:
n1 = 9 y n2 = 200

Bien, entonces lo que hay que hacer es coger cada uno de los números que hay entre 9 y 200, es decir:
el 10, el 11, el 12, el 13...............hasta el 199.

Y para cada uno de esos números, tenemos que comprobar si es múltiplo de 200(n2)
¿Cómo sabemos si un número es multiplo de otro?
¿Cómo sabemos el 10 es múltiplo de 200?

Si encontramos un número, que al multiplicar por 10 , nos da resultado 200. Entonces el 10 SÍ es múltiplo.

Así que tenemos que desarrollar, otra secuencia de números que vaya desde el 1 hasta 200 (por encima de 200 ya no vale la pena seguir multiplicando) y comprobar si con alguno de estos, al multiplicar por 10, nos da 200.

De este modo encontraríamos que 10 x 2 = 200, por lo tanto, 10 es múltiplo.

Luego habría que repetir el proceso con el 11, de nuevo multiplicar desde el 1 hasta 200 a ver si alguno nos da 200.
Que no encontraremos ninguno que cumpla esto, así que 11 no será multiplo.

Si encontraremos que el 20 es múltiplo, porque 20 x 10 = 200

O el 25, porque 25 x 8 = 200

Etc, etc...

Con esto podemos concluir que vamos a necesitar dos bucles anidados.

Uno que nos de los numeros de la secuencia que hay entre n1 y n2.

Y el otro que se encargue de darnos números entre 1 y n2, y por cada valor de la secuencia que nos da el otro bucle, compruebe si es múltiplo de n2

La verdad es que es un poco lioso de explicar, pero no es tán dificil.

Te doy el mismo consejo que le doy a todo el mundo, no intentes resolver de golpe TODO lo que te piden.
Se supone que tienes, además, que encontrar cual es el multiplo menor, cual es el mayor y sacar su producto en pantalla.

Bien, esto déjalo para después. De momento centrate en conseguir lo de encontrar multiplos entre los dos valores proporcionados por teclado y por cada multiplo encontrado, lo muestras en pantalla.

Cuando tengas, esto piensa en lo de quedarte con el menor y el mayor para luego multiplicarlos.

Yo te dejo aquí el ejercicio solucionado, por si lo quieres ver, tú decides. Pero mejor intenta primero resolverlo por tu cuenta.
El codigo que pongo trae bastantes comenario intentando explicar lo mejor posible lo que se está haciendo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//ingresar dos numeros y q el programa me muestre los multiplos que estan entre esos dos valores
//y multiplique el primero con el ultimo
package multiplos;
 
import java.util.Scanner;
 
public final class EncuentraMultiplos {
 
	public static void main(String[] args) {
		Scanner teclado = new Scanner(System.in);
		System.out.print("Primer numero: ");
		int n1 = teclado.nextInt();
		System.out.print("Segundo numero, ha de ser mayor que el anterior: ");
		int n2 = teclado.nextInt();
		teclado.close();
 
		/*
		 * De los multiplos que encontremos, tenemos que multiplicar
		 * el menor por el mayor. Así que necesitaremos dos variables
		 * para guardar estos multiplos, las llamamos: multiploMenor y multiploMayor
		 * Para cada multiplo que encontremos, tendremos que comparar
		 * con estas dos variables para ver si es menor que multiploMenor o es mayor
		 * que multiploMayor.
		 * Debido a esto, no nos sirve incializar estas variables con valor 0, especialmente
		 * la de multiploMenor, ya que si vale 0 no encontraremos ningun multiplo que al comparar
		 * sea menor que 0.
		 * Para poder hacer bien las comparaciones, podemos inicializarloso con lso valores que
		 * nos han dado por teclado 
		 */
		int multiploMenor = n2;
		int multiploMayor = n1;
 
		/*
		 * Ahora hay que buscar multiplos de n2. Buscamos los que hay entre n1 y n2.
		 * Es decir, todo numero de dicha secuencia, que multiplicado por otro sea igual a n2,
		 * se considera multiplo.
		 * Usamos dos bucles anidados.
		 */
 
		System.out.print("\nMultiplos de " + n2 + " encontrados: ");
		for (int i = (n1 + 1); i < n2; i++)
		{
			for (int j = 1; j < n2; j++)
			{
				if (i * j == n2)//Multiplo encontrado
				{
					System.out.print(i + " ");
					//Comprobamos si es menor o mayor
					if (i < multiploMenor)
						multiploMenor = i;
					if (i > multiploMayor)
						multiploMayor = i;
				}
			}
		}
		//Bucles finalizados, comprobamos si hemos encontrado multiplos y y multiplicamos el mayor por el menor
		//Si alguna de las variables, por ejemplo multiploMenor, conserva el valor inicial (n2 en este caso), es 
		// que no hemos encontrado mutliplos en la secuencia
		if (multiploMenor == n2)
			System.out.println("\nNo se encontraron multiplos");
		else
			System.out.println("\nMultiplicacion de menor por mayor -->" + multiploMenor + " * " + multiploMayor
					+ " = " + multiploMenor*multiploMayor);
	}
}

Esto nos da el siguiente resultado por consola:
1
2
3
4
5
Primer numero: 9
Segundo numero, ha de ser mayor que el anterior: 200
 
Multiplos de 200 encontrados: 10 20 25 40 50 100
Multiplicacion de menor por mayor -->10 * 100 = 1000
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

multiplicacion

Publicado por Billy Joel (874 intervenciones) el 06/11/2018 16:57:34
No me queda claro cuales multiplos quieres, si los múltiplos de a entre {a-b} o los múltiplos de b entre {a-b}.
Tampoco me queda claro la multiplicación final... supongo que sería multiplicar el primer número que ingresa el usuario con segundo número que ingresa el usuario.

Pero como no queda claro y de todas formas quería hacerlo acá está la solución de lo que entendí:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
 
/**
 *
 * @author billy.johnson
 */
public class Multiplicacion {
 
    public static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
    public static int readInt(String message) {
        int x = -1;
        boolean error = false;
        do {
            try {
                System.out.println(message);
                x = Integer.parseInt(br.readLine());
            } catch (IOException | NumberFormatException ex) {
                System.out.println("solo introduzca números enteros");
                error = true;
            }
        } while (error);
        return x;
    }
 
    public static void main(String[] args) {
 
        int a = readInt("Introduzca el primer número: ");
        int b = readInt("Introduzca el segundo número: ");
        if (a > b) {
            System.out.println("El segundo número debe ser mayor que el primero");
        } else {
            List<Integer> multiplosA = new ArrayList();
            List<Integer> multiplosB = new ArrayList();
            for (int i = a; i <= b; i++) {
                if (i % a == 0) {
                    multiplosA.add(i);
                }
                if (i % b == 0) {
                    multiplosB.add(i);
                }
            }
 
            if (multiplosA.isEmpty()) {
                System.out.println("No hay multiplos de " + a + " entre " + a + " y " + b);
            } else {
                System.out.println("Multiplos de " + a + " entre " + a + " y " + b + ":");
                multiplosA.forEach(System.out::println);
            }
            if (multiplosB.isEmpty()) {
                System.out.println("No hay multiplos de " + b + " entre " + a + " y " + b);
            } else {
                System.out.println("Multiplos de " + b + " entre " + a + " y " + b + ":");
                multiplosB.forEach(System.out::println);
            }
 
            System.out.println("La multiplicación de " + a + " x " + b + " = " + (a * b));
        }
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar