Ver las NORMAS de estos Foros Web ZackYFileS Chat ZackYFileS Agregar a Favoritos Contactar con Administrador
 
 

TU PUBLICIDAD AQUÍ!!
Navegación
Retroceder   Foros ZackYFileS >
OTROS TEMAS DE INTERES - INTERNET:
> PROGRAMACIÓN Lenguajes: Visual Basic, C++, etc
Nombre de usuario
Contraseña
Configuración de UsuarioAyuda (FAQs)Nuevos PostsBuscar


Respuesta
 
Herramientas
Antiguo 16/12/2005, 18:06   #1
Snake12
Usuario Activo
 
Avatar de Snake12
 
Fecha de ingreso: 07/mar/2003
Mensajes: 118
Snake12 está en el buen camino
Ejercicio C++, Números de Hamming

Hola amigos, tengo un problema como de costumbre, tengo que hacer el siguiente problema:

Cita:
Realizar un programa en C++ para calcular los primeros 100 números de Hamming en orden creciente a partir de la formula:
H = 2p * 3q * 5r

En donde H representa a un número de Hamming y p, q y r son naturales. El número 1 es el primer número Hamming.

Para resolverlo se aconseja utilizar un bucle indefinido en el cual se van generando en orden los números naturales. Cada uno de ellos se factoriza y se comprueba si es múltiplo de 2, 3 o 5 únicamente, en cuyo caso se trata de un numero de Hamming, si el numero es múltiplo de cualquier otro valor (aunque también lo sea de 2, 3 o 5) no lo será.

Para factorizar un número se divide repetidamente por los números primos menores en orden exceptuando el 1 (2, 3, 5, 7, 11, etc) hasta que el resultado de una de las divisiones no de cero en ese momento se vuelve a repetir el proceso con el siguiente primo. El proceso se detiene cuando el valor a dividir es asimismo primo (o dicho de otra forma cuando al dividirlo por el primo correspondiente da de cociente 1). Los factores serán entonces los primos con los que al dividir el número ha dado algún resto cero.
Bueno, yo he hecho el ejercicio, pero creo que no está completo, es decir, yo he hecho la factorización, pero creo que me falta saber si el número es a su vez múltiplo de 2, 3 ó 5, pero no sé si ya está comprobado en el proceso anteiror, aunque creo que no. El ejercicio es este:

Cita:
int i,hamming,num, num_columnas;

cout << "Estos son los 100 primeros numeros de Hamming: " << "\n" << endl;

i = 1;
hamming = 0;
num_columnas = 0 ;
while ( hamming < 100 )
{
num = i;
while ( num % 2 == 0 )
{
num = num / 2;
}

while ( num % 3 == 0 )
{
num = num / 3;
}

while ( num % 5 == 0 )
{
num = num / 5;
}

if( num == 1 )
{
hamming++;
cout << i << ", ";

if(++num_columnas % 10 == 0)
cout << "\n" << endl;
}
i++;
}
cout << "\n" << endl;

system("Pause"); // Hacer una pausa
return 0; // Valor de retorno al S.O.
}
Bueno amigos, a ver si alguien me hecha una mano, porque la verdad, no sé si lo que obtengo son los números de Hamming o números cualesquiera.

Gracias y hasta luego!!!

Última edición por Snake12; 16/12/2005 a las 18:18.
Snake12 está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Publicidad: Conoce las ofertas de ANUNCIATE
Antiguo 16/12/2005, 19:50   #2
Snake12
Usuario Activo
 
Avatar de Snake12
 
Fecha de ingreso: 07/mar/2003
Mensajes: 118
Snake12 está en el buen camino
Pues amigos, el ejercicio, después de muchas horas leyendo el enunciado y pensar, he llegado a la conclusión de que está bien, no le falta nada...

Lo que digo arriba es que no sabía si el número que factorizo es múltiplo de 2, 3 ó 5, pero como factorizo para 2, 3 ó 5 ,por fuerza tiene que ser múltiplo de alguno de esos números; y aunque el ejercicio diga que sólo sea múltiplo de 2, 3 ó 5, si por ejemplo el número fuese 40, sería múltiplo de 4, y como 4 es 2^2, pues es múltiplo de 2...

Bueno, no sé si me explico, pero creo que está bien, de todas maneras, si alguien me diijese si está bien o no, le estaría muy agradecido. Ta luego!!!
Snake12 está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 17/12/2005, 02:43   #3
kolmo7 
Usuario PREMIUM+
 
Avatar de kolmo7
 
Fecha de ingreso: 31/mar/2004
Mensajes: 20.819
kolmo7 Cuando busquemos reputación en Wikipedia, saldrá su avatarkolmo7 Cuando busquemos reputación en Wikipedia, saldrá su avatarkolmo7 Cuando busquemos reputación en Wikipedia, saldrá su avatarkolmo7 Cuando busquemos reputación en Wikipedia, saldrá su avatarkolmo7 Cuando busquemos reputación en Wikipedia, saldrá su avatarkolmo7 Cuando busquemos reputación en Wikipedia, saldrá su avatarkolmo7 Cuando busquemos reputación en Wikipedia, saldrá su avatarkolmo7 Cuando busquemos reputación en Wikipedia, saldrá su avatarkolmo7 Cuando busquemos reputación en Wikipedia, saldrá su avatarkolmo7 Cuando busquemos reputación en Wikipedia, saldrá su avatarkolmo7 Cuando busquemos reputación en Wikipedia, saldrá su avatar
Hace tiempo que no uso C y se me ha olvidado casi todo lo que se...pero en el procedimiento que empleas me parece que lo que haces es mirar uno a uno los números naturales y comprobar si son de Hamming con las divisiones sucesivas...esto es lo que te aconseja el enunciado...

¿Y no sería más fácil aplicar la fórmula directamente? Sólo habría que multiplicar por 2, 3 y 5.

1
1*2 = 2 (el número anterior por 2)
1*2*3 = 2*3 = 6 (el número anterior por 3)
1*2*3*5 = 6*5 = 30 (el número anterior por 5)
1*2*3*5*2 = 30*2 = 60 (el número anterior por 2)
1*2*3*5*2*3 = 60*3 = 180 (el número anterior por 3)
1*2*3*5*2*3*5 = 180*5 = 900 (el número anterior por 5)
...

No se si me explico...

A la hora de programarlo pintaríamos en pantalla el 1 directamente y luego haríamos un for para los productos hasta llegar a 99 (el 1, junto con los 99 del while nos dan los 100 números pedidos).

Y dentro del for, usamos unos if para ir cambiando el número por el que multiplicamos: primero por el 2 y multiplicamos, luego si esa variable vale dos la cambiamos por 3 y muliplicamos y si la variable vale 5 la cambiamos por 2 y multiplicamos. También se podría hacer con un case en lugar del if.
__________________
Un saludo.

kolmo7.


[I][B](Socio Nº 10)[/B][/I]

Última edición por kolmo7; 17/12/2005 a las 02:44.
kolmo7 está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 17/12/2005, 12:35   #4
Snake12
Usuario Activo
 
Avatar de Snake12
 
Fecha de ingreso: 07/mar/2003
Mensajes: 118
Snake12 está en el buen camino
Muchas gracias kolmo7 por tu explicación, la entiendo, y así sería más sencillo, lo malo que ya entregué ayer el ejercicio...pero está bien como lo hice, por lo menos es algo, y utilizo una sentencia while que de eso se trataba, aunque hubiese estado mejor si aplicase también for.

Bueno, gracias de nuevo y ta leugo!!!
Snake12 está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 17/12/2005, 15:00   #5
kolmo7 
Usuario PREMIUM+
 
Avatar de kolmo7
 
Fecha de ingreso: 31/mar/2004
Mensajes: 20.819
kolmo7 Cuando busquemos reputación en Wikipedia, saldrá su avatarkolmo7 Cuando busquemos reputación en Wikipedia, saldrá su avatarkolmo7 Cuando busquemos reputación en Wikipedia, saldrá su avatarkolmo7 Cuando busquemos reputación en Wikipedia, saldrá su avatarkolmo7 Cuando busquemos reputación en Wikipedia, saldrá su avatarkolmo7 Cuando busquemos reputación en Wikipedia, saldrá su avatarkolmo7 Cuando busquemos reputación en Wikipedia, saldrá su avatarkolmo7 Cuando busquemos reputación en Wikipedia, saldrá su avatarkolmo7 Cuando busquemos reputación en Wikipedia, saldrá su avatarkolmo7 Cuando busquemos reputación en Wikipedia, saldrá su avatarkolmo7 Cuando busquemos reputación en Wikipedia, saldrá su avatar
Llegué tarde...lo siento.
__________________
Un saludo.

kolmo7.


[I][B](Socio Nº 10)[/B][/I]
kolmo7 está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Publicidad: Conoce las ofertas de ANUNCIATE
Respuesta


Usuarios viendo actualmente este tema: 1 (0 usuarios registrados y 1 visitantes)
 

Permisos para publicar mensajes
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los BB code están Activado
Los Emoticones están Activado
El código [IMG] está Activado
El Código HTML está Desactivado

Ir al foro

Temas similares
Tema Autor Foro Resp. Último mensaje
Ejercicio C++, calcular los n primeros números primos Snake12 PROGRAMACIÓN Lenguajes: Visual Basic, C++, etc 21 14/08/2010 17:27
Se puede extraer el KI de una targeta con varios numeros (Sim-emu)? ragtap TELEFONOS MÓVILES GSM 3 12/07/2005 09:29
Tener activados 2 numeros en un movil ¿se puede? krazy TELEFONOS MÓVILES GSM 9 21/06/2005 10:14
Dos numeros una targeta gaby35 TELEFONOS MÓVILES GSM 0 21/11/2004 12:31


!! ADVERTENCIAS !!: Las informaciones aquí publicadas NO CONTIENEN KEYS para la decodificación de ningún sistema: NO SON OPERATIVOS en sistemas SAT que precisen de su correspondiente suscripción.

ESTA TOTALMENTE PROHIBIDO EL USO DE ESTAS INFORMACIONES PARA LA MODIFICACIÓN O  DEFRAUDACIÓN DE SISTEMAS DE ACCESO CONDICIONAL.

ESTOS FOROS SON MODERADOS Y NO SE PERMITE LA PUBLICACIÓN DE INFORMACIONES ILEGALES POR PARTE DE LOS USUARIOS. EN CASO DE DETECTARSE ESTE TIPO DE INFORMACIONES, LOS USUARIOS SERÁN EXCLUIDOS DE ESTAS PÁGINAS.

USO DE COOKIES: Utilizamos COOKIES y de terceros para mejorar nuestros servicios y navegación por la web. Si continua navegando, consideramos que acepta su uso.  


La franja horaria es GMT +2. Ahora son las 11:11.


-------------------------------------------------------------------- --------------------------------------------------------------------

Powered por vBulletin™ Version 3.8.10
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.
Traducido por vBsoporte - vBulletin en español
Hispaservicios - J.G.C - 29112549T - Rio Cinca, 2, 30 (50180) SPAIN.
Todos los derechos reservados. Prohibida cualquier reproducion total o parcial.


Foros Patrocinados por anunciantes.