Java - Ayuda para Novato

 
Vista:

Ayuda para Novato

Publicado por Caleb (2 intervenciones) el 29/08/2019 03:41:42
Holaaa, que pena con ustedes pero lo he intentado muchas veces y aun no he podido resolver este ejercicio, seria de mucha ayuda que me dieran una mano, gracias por su atención...
------------------------------------------------------------------------------------------------------------------------------------------
Escribir algoritmo que lea numeros positivos, de esos numeros leidos toca determinar cual es el numero mayor que sea multiplo de 7 y cual es el numero menor que sea multiplo de 3.
Si no hay multiplos de 7 decir "No se encuentra ningún múltiplo de 7" y hacer lo mismo con el 3...
Y pues por ultimo terminar cuando el numero leido sea 99....
EJEMPLO:
NUMEROS:
14
42
21
99
MAYOR MULTIPLO DE 7: 42
MENOR MULTIPLO DE 3: 21

Lo he intentado de muchas formas pero no he podido....

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
package javaapplication7;
 
import java.util.Scanner;
import javax.swing.JOptionPane;
 
public class JavaApplication7 {
 
    public static void main(String[] args) {
        Scanner lector=new Scanner (System.in);
 
        System.out.println("ingrese el numero de elementos: ");
        int n=lector.nextInt ();
        System.out.println("Comience!!!");
        int [] Arreglo=new int [n];
        for (int i=0;i<n;i++)
        {
 
            Arreglo[i]=lector.nextInt();
 
        }
 
        int dos;
        dos=Arreglo[0];
        for (int s=0;s<n;s++)
 
            if(Arreglo[s]%7 ==0){
                dos=Arreglo[s];
            }
 
        int uno;
        uno=Arreglo[0];
        for (int k=0;k<n;k++)
 
            if(Arreglo[k]%3 ==0){
                System.out.println("menor multiplo de 3: " +Arreglo[k]);
            }
 
        for (int j=1;j<n;j++)
        {
            if(Arreglo[j]>dos){
                System.out.println("mayor multiplo de 7: ");
                System.out.println(dos);}
            else{
                System.out.println("No tiene múltiplo de 7");
            }
            if(Arreglo[j]<uno){
                System.out.println("menor multiplo de 3: ");
                System.out.println(uno);}
            else{
                System.out.println("No tiene multiplo de 3");
            }
 
        }
    }
}

**Nuevamente Gracias por la Ayuda**
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 Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda para Novato

Publicado por Kabuto (1381 intervenciones) el 29/08/2019 11:31:39
Hola.

En este ejercicio no es buena idea usar arreglos ya que no sabemos cuántos número va a introducir el usuario. El enunciado dice que la inserción de números termina cuando el usuario ingresa el valor 99. Así que en realidad, el usuario podría pasarse toda su vida introduciendo números mientras no ingrese el 99

Y ese "mientras no ingrese el 99" ya nos dice como ha de ser el flujo del programa. Habría que usar un bucle while que acepte números hasta que se introduzca el 99.

Estos números que se van ingresando, en lugar de almacenarlos en un arreglo y luego computarlos, se pueden ir computando sobre la marcha, según se van introduciendo.
Para cada valor ingresado, preguntaremos si es múltiplo de 7. En caso afirmativo, si es el primero que encontramos lo guardaremos en una variable llamada por ejemplo mayor7.
Si no es el primero que encontramos, lo compararemos que el valor que tenga ya mayor7 y si es mayor, lo asignaremos a dicha variable.

Luego preguntaremos si es múltiplo de 3 para proceder de forma parecida.


La única dificultad sería: Cuando encontramos un múltiplo de 7 o de 3, ¿cómo sabemos si es o no el primer múltiplo que hemos encontrado para decirle al programa si lo ha de guardar directamente (porque es el primero) o lo ha de comparar con el valor ya guardado anteriormente (porque no es el primer múltiplo encontrado)

Para solucionar esto se podrían usar dos variables boolean, iniciadas con valor false y que cambien a true cuando encontramos los múltiplos que buscamos. Así sabríamos si es el primer múltiplo o ya habíamos encontrado otros.

Pero hay otra forma que nos permite ahorrarnos estas variables boolean. Puesto que el usuario va a introducir únicamente valores positivos, podemos iniciar las variables donde guardaremos los múltiplos, llamadas por ejemplo mayor7 y menor3, con un valor negativo.
Así durante la ejecución del programa, si estas variables conservan el valor negativo, sabremos que todavía no se ha encontrado ningún múltiplo de los que buscamos.

Te pongo aquí un código de ejemplo que quizás se entiende mejor leyendo el código que no la explicación:

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
import java.util.Scanner;
 
public class JavaApplication7 {
 
    public static void main(String[] args) {
        Scanner lector = new Scanner (System.in);
        int entero = 0;
        /*
         * Las variables donde guardaremos el mayor y menor
         * las inicializamos con un valor negativo.
         * Puesto que el usuario va a introducir números positivos,
         * si estas variables conservan el valor negativo servirá para
         * indicarnos que NO se han encontrado multiplos de 7 y/o de 3
         */
        int mayor7 = -1;
        int menor3 = -1;
 
        while (entero != 99) {
        	System.out.println("Introduzca un entero positivo (99 para SALIR):");
        	entero = lector.nextInt();
 
        	if (entero % 7 == 0) { //Múltiplo de 7
        		if (mayor7 == -1) //Si conserva -1, es que este es el primer múltiplo de 7 encontrado
        			mayor7 = entero;
        		else //No es el primer multiplo de 7 encontrado, solo lo asignaremos si es mayor al anterior encontrado
        			if (entero > mayor7)
        				mayor7 = entero;
        	}
 
        	if (entero % 3 == 0) { //Múltiplo de 3
        		if (menor3 == -1)
        			menor3 = entero;
        		else
        			if (entero < menor3)
        				menor3 = entero;
        	}
        }
        System.out.println("\nFin de inserción de números\n");
        lector.close();
 
        //Bucle ha terminado porque el usuario introdujo 99. Mostramos resultados
        if (mayor7 == -1)
        	System.out.println("No se han encontrado múltiplos de 7");
        else
        	System.out.println("Mayor múltiplo de 7: " + mayor7);
 
        if (menor3 == -1)
        	System.out.println("No se han encontrado múltiplos de 3");
        else
        	System.out.println("Menor múltiplo de 3: " + menor3);
    }
}

Y este es el resultado obtenido en consola:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Introduzca un entero positivo (99 para SALIR):
4
Introduzca un entero positivo (99 para SALIR):
23
Introduzca un entero positivo (99 para SALIR):
67
Introduzca un entero positivo (99 para SALIR):
342
Introduzca un entero positivo (99 para SALIR):
343
Introduzca un entero positivo (99 para SALIR):
87
Introduzca un entero positivo (99 para SALIR):
100
Introduzca un entero positivo (99 para SALIR):
99
 
Fin de inserción de números
 
Mayor múltiplo de 7: 343
Menor múltiplo de 3: 87
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
sin imagen de perfil
Val: 8
Ha aumentado su posición en 4 puestos en Java (en relación al último mes)
Gráfica de Java

Ayuda para Novato

Publicado por caleb (4 intervenciones) el 30/08/2019 00:19:49
¡Wow! Al parecer estaba muy equivocado en el ejercicio jajaja
Muchísimas Gracias por la explicación tan detallada y la rápida respuesta, de verdad te la rifaste ¡Un abrazo!
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