Constante de Kaprekar = 6174

ALEJANDRO IZQUIERDO BONILLA

/* La constante de Kaprekar es aquella que resulta de tomar un número de 4 cifras, sea por ejemplo el 3582, ordenar sus cifras en orden decreciente, en este caso 8532, y también ordenarlas en orden creciente, 2358, restar ambos números, 8532-2358=6174, y volver a aplicar este proceso al número resultante (bien añadiendo ceros a la dcha para el mayor de ellos o ceros a la izqda para el menor de ellos), de forma que el resultado final siempre será 6174. Se puede ver que independientemente del número inicial el proceso siempre acaba en el 6174, es decir, es un punto fijo de este sistema dinámico. (Evidentemente se exceptúan los números con las 4 cifras iguales que dan como resultado cero). */

#include <iostream>
using namespace std;

int reordenar(int numero, int *p)
{
int dig[4], momen,i,j;
dig[0] = numero/1000;
momen = numero-dig[0]*1000;
dig[1] = (momen)/100;
momen = momen-dig[1]*100;
dig[2] = momen/10;
dig[3] = momen-dig[2]*10;
if(dig[0]==dig[1] && dig[1]==dig[2] && dig[2]==dig[3])
{
return 1;
}
for(j=0;j<=3;j++)
{
for(i=0;i<3;i++)
{
if(dig[i]<dig[i+1])
{
momen = dig[i];
dig[i] = dig[i+1];
dig[i+1] = momen;
}
}
}
*p=(dig[0]*1000)+dig[1]*100+dig[2]*10+dig[3];
for(j=0;j<=3;j++)
{
for(i=0;i<3;i++)
{
if(dig[i]>dig[i+1])
{
momen=dig[i];
dig[i] =dig[i+1];
dig[i+1]=momen;
}
}
}
*(p+1) = dig[0]*1000+dig[1]*100+dig[2]*10+dig[3];
return 0;
}

int main()
{
int numero,mem[2];
cout<<“Introduce un numero de 4 digitos: “;
cin>>numero;
while(numero!=6174)
{
cout<<“Numero: “<<numero<<endl;
if(reordenar(numero,&mem[0]) == 0)
{
cout<<mem[0]<<” – “<<mem[1]<<” = “<<mem[0]-mem[1]<<endl;
numero = mem[0]-mem[1];
} else {
cout<<“Numero no valido”<<endl;
return 1;
}
}
return 0;
}

Acerca de programacion1z

Curso de introducción a la programación en C
Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s