Java - Ayuda con dos subprogramas

 
Vista:

Ayuda con dos subprogramas

Publicado por Pepe (1 intervención) el 21/10/2017 12:05:34
Buenas tengo un programa, que quiero hacer, se me ocurren unas cuantas ideas de como empezarlo pero no totalmente, ¿alguien puede ayudarme? Dejo la guia.

Múltiplos sinceros: Se denomina “múltiplos sinceros” a "los números que son múltiplos de un
número base de una cifra y en los cuales la suma de sus cifras es también este mismo número base".
Por ejemplo, “múltiplos sinceros” del número base 2 son el 2, 20, 110, 200, 1.010, 1.100, 2.000, ...
Ya que el 20 es múltiplo de 2 y además la suma de sus cifras (2+0) da 2.
El 110 también es múltiplo de 2 y además la suma de sus cifras (1+1+0) da 2.
Otro ejemplo: “múltiplos sinceros” del número base 9 son el 9, 18, 27, 36, 45, 54, 63, 72, 81, 90,
108, 117, ...

Números colegas:
Un número n es “colega” de una cifra d, si el número n empieza y termina por la cifra d.
Por ejemplo: El número n =101 es colega de la cifra d = 1
El número n = 22 es colega de la cifra 2
El numero n = 3012 NO es colega de la cifra d = 3
El número n = 12341 es colega de la cifra 1.

Práctica:
Dada esta información desarrollar un programa que:
Muestre un menú que permita escoger entre:
a) Múltiplos sinceros
b) Números colegas
c) Terminar
Si el usuario escoge la opción a) deberá solicitar dos números, correspondientes al número base y al
mayor número (límite) que puede aparecer en la secuencia y mostrará todos los “múltiplos sinceros”
de dicho número base hasta el límite. Por ejemplo, si introduce como número base el 2 y como límite
el 1000 deben aparecer los números: 2, 20, 110, 200 ya que el siguiente “múltiplo sincero” que es
1010 supera el límite 1000.
Si el usuario elige la opción b) la aplicación le pedirá un número entero positivo (n) y un número de
una única cifra (d) y escribirá en pantalla si el número n es “colega” de la cifra d.


Llevo hecho esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static int MultSinceros(int base,int limite)
    {
           int unidades, decenas, centenas,suma, resultado;
 
           for (int i=base; base>= limite; i++ ){
               unidades = i % 10;
               decenas = (i / 10) % 10;
               centenas = i / 100;
               suma = unidades+centenas+decenas;
            if (suma == base || i % base == 0) {
                System.out.println(i);
           }
 
           }
       return;
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
sin imagen de perfil
Val: 349
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda con dos subprogramas

Publicado por Andrés (340 intervenciones) el 23/10/2017 19:17:52
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
public static boolean esColega(final int cifra, int numero) {
 
	int digitoIzquierdo = numero % 10;
 
	while (numero >= 10) {
		numero /= 10;
	}
 
	return numero == digitoIzquierdo && numero == cifra;
 
}
 
public static List<Long> calcularNumerosSinceros(final int base, final int limite) {
 
	long numero = 1;
	int suma = 0;
	long i = 1;
 
	List<Long> listado = new ArrayList<Long>();
 
	while (base * i < limite) {
 
		numero = base * i;
		suma = 0;
 
		while (numero > 0) {
			suma += numero % 10;
			numero /= 10;
		}
 
		if (suma == base) {
 
			listado.add(base * i);
 
		}
 
		i++;
	}
 
	return listado;
 
}
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