Implementa un programa que muestre todos los múltiplos de n entre n y m · n,

Iniciado por ciudadanoz, 15 Junio 2019, 00:53 AM

0 Miembros y 1 Visitante están viendo este tema.

ciudadanoz

El caso es que lo hago como dice y solo me sale el primer numero multiplicado por el segundo aunque eso es lo que pide pero tambien pide que muestro los multiplis de los numeros

Tachikomaia

No entiendo lo que pides.

Creo que...
1- Se ingresa un número N.
2- se ingresa un número M.
3- Se muestran todos los números divisibles por N, desde N a N*M.

Pues...
Contador = 1
Lista = N
Si Contador < M
__Contador++
__Agregar Contador*N en la lista. Yo haría Lista=Lista+", "+(Contador*N), pero depende de lo fuertemente tipado de tu lenguaje o no sé bien qué.
sino
__fin
Ir a Si

Usa while si quieres.
También se podría evitar el "sino", de algún modo, pero no sé bien. Por ejemplo:
Contador = 0
Lista = ""
Contador++
Si Contador <= M
__Agregar Contador*N en la lista. Lista=Lista+(Contador*N)+", "
__Ir a Contador++
fin del si
Fin

El problema de ese es que la lista te quedaría con un ", " innecesario al final.


Bueno... voy a chequear por las dudas que esté diciendo disparates, pero si vamos al caso no tengo claro a qué llamas "múltiplos", yo hablé de divisibles.
N ejemplo = 2
M ejemplo = 10
Contador = 1
Lista = 2
1 < 10 por lo tanto...
__1 pasa a 2
__Lista = 2, 4
2 < 10 por lo tanto...
__2 pasa a 3
__Lista = 2, 4, 6

Bueno... no creo que esté tan mal. Cualquier cosa me dices.

@XSStringManolo

#2
Si haces ese programa, va a ser un bucle infinito ya que hay infinitos múltiplos comunes.

Busca en wikipedia el Minimo Comun Multiplo. Te acordará del colegio.

Tienes que hacer todos los múltiplos comunes de (n) y (m.n)

Me extraña que te pida todos los multiplos comunes...

Si un numero es multiplo de otro quiere decir que si multiplicas ese número por el número natural adecuado, vas a llegar a ese valor.

Por ejemplo n * m.
n = 10;
m = 20;

resultado = n*m;
Ahora resultado vale 200.
Como sabrías si 200 es múltiplo de por ejemplo 3?
3 * 66 = 198.
3 * 67 = 201.
200 no es multiplo de 3 porque ningún numero multiplicado por 3 da 200.

En vez de ir probando 3*1, 3*2, 3*3, 3*4 ,3*5 hasta que el valor pase de 200 para comprobar si en algún momento alguna operación es igual a 200, lo puedes hacer de una manera más fácil y eficiente.
Divides 200/3.  Si dividiendo 200/3 la division no es exacta, no son múltiplos. Otra manera de expresar esto es: Si dividiendo 200/3 el resto de la divison no es igual a 0, entonces no es múltiplo.

Entonces para comprobar si un número es múltiplo de otro, solo necesitas hacer una division y comprobar el resto.

Una vez comprobado, si el resto es 0, lo muestras en pantalla.

En programación se suele utilizar el operador módulo % para obtener el resto de una division.

Ese operador no hace un porcentaje como estamos acostumbrados en matemáticas. En programación te da el resto. Se usa de la siguiente manera:

RestoDeLaDivision = m % n;

En tu ejercicio harías:

RestoDeDivison = (m*n) % n;

if (Resto de la división == 0)
{
Muestra en pantalla  m*n;
}

En ese caso te mostraría solo 1 número por pantalla en el caso de que este fuese múltiplo.
Para poder mostrar más múltiplos comunes, deberas sumarle 1 a m para que se compruebe el siguiente múltiplo y si este es comun comprobando el resto. Por lo que tendras que meterlos en un bucle.

Lo normal es que solo se busque un número determinado de números comunes, por ejemplo los 10 primeros y no dejar un bucle infinito en pantalla mostrando números cada vez más grandes hasta que te veas forzado a cerrarlo para que no pete el ordenador.

A parte los tipos de datos tienen unos bytes dsterminados de tamaño, asique una vez te pases de ese tamaño se dará la vuelta a los numeros y se empezará a comprobar números negativos. Por lo que deberías utilizar varias cosas extra para evitarlo.

Lo primero sería indicar un tipo de dato que no admita números negativos para guardar el resultado antes de mostrarlo. Siendo este el tipo de dato estandar más largo para almacenar números enteros. En caso de C o C++ unsigned long long nombreDeLaVariable =n*m;

Lo segundo dar tiempo al que observe el programa para ver los resultados por pantalla
Esto lo puedes hacer con la funcion Sleep(milisegundos); incluyendo <windows.h> y siendo milisegundos el tiempo que quieres que se detenga el programa en el bucle. Por ejemplo Sleep(500); para parar medio segundo trás mostrar un resultado.

debes meter todo eso dentro de un bucle while que segun tu pides es infinito.
Lo haces así:
while (1)
{
Aqui metes el codigo que quieras que se repita infinitas veces.
Mete tambien el Sleep(500); dentro del ifpara que no sea un caos de imprimir numeros sin parar.
}

Estoy seguro de que no te piden este tipo de programa. Te has confundido al leer, o al escribir el título. O tu profesor se confundio.

El título del hilo que has creado es de libre interpretación al no situar comas. Das pocos detalles, no has intentado hacer nada poe tu cuenta,
No se sabe si pides:
(n/n) y (m*n)
(n+m) * n
(n*m) y (n*m)
n y (m*n)


Pd: Mi codigo no te resuelve el problema, solo te explica lo necesario para que tu sepas como hacerlo con ejemplos. Piensa bien en que se te pide.  Y hazlo por tu cuenta. Cuando no sepas hacer algo, consultas el post. Antes de nada mira bien que es lo que se te pide y las comas que faltan en el título. Y si como dice el compañero de arriba no te piden el máximo común divisor, o como pienso yo, no te piden una funcion que calcule múltiplos a partir del mínimo común múltiplo. Puedes usar el algoritmo de nuneros primos para resolverlo, o utilizar uno propio haciendo 2 o 3 comprobaciones.

Si fue el profesor quien se equivoco, yo que haría un menu que te de a elegir entre 4 llamadas a funciones.
Una para el maximo comun divisor, otra para todos los divisores comunes, otra para el minimo comun múltiplo y otra para todos los múltiplos comunes.

Si no le haces nada porque no "entendias" no creo que le haga mucha gracia, ni a ti cuando el te de las notas por no esforzarte.

Tampoco dices en que lenguaje es.

Mira libros de programacion por tu cuenta y cursos online.