Anda di halaman 1dari 3

#include<stdio.

h>

int kapre(int ar1[], int n); //esta es la funcion que nos dara la constante de
kaprekar
int ordas(int ar2[], int n); //esta funcion ordena de forma ascendente el array por
el metodo de burbuja
int ordde(int ar3[], int n); //esta funcion ordena de forma descendete el array por
el metodo de burbuja
int copar(int ar4[], int ar5[], int n); //esta funcion copia un array a otro
int num_a_vector(int t, int ar6[]); //esta funcion transforma un int en un array
int vector_a_num(int ar7[]); //esta funcion transforma un array en un int

int main (){


int x, m, c, d, u;
int a[4];
int b[4];
int i;
base:

printf("\nLa unica limitante para obtener la constante de kaprekar es que no


deben ser los 4 numeros iguales\n" );
printf("\nEn este programa si se introduce un numero menor a 1000 los
espacios de millares, centenas, decenas se llenaran automaticamente con ceros\n" );
printf("\nIntroduzca el numero de 4 digitos que desea verificar en la
constante de kaprekar\n\n" );
scanf("%i", &x);

num_a_vector(x, a);

if(a[0]!=0 || a[1]!=0 || a[2]!=0 || a[3]!=0 ){

if(a[0]==a[1] && a[1]==a[2] && a[2]==a[3]){


printf("\nEste no es un numero valido para obtener la constante de
kaprekar\n");
goto base;

}
else{
kapre(a,4);
}
}

return 0;
}

int kapre(int ar1[], int n){


int x[4];
int y[4];
int i, num1, num2, num3;
do{
ordes(ar1, 4);
num1 = vector_a_num(ar1);
printf("\nEL numero en forma descendente es\n%i\n", num1);

copar(x, ar1, 4);


ordas(x, 4);
num2 = vector_a_num(x);
printf("\nEL numero en forma ascendente es\n%i\n", num2);
num1= num1 - num2;
if(num1==6174){
printf("\nEl resultado de la resta nos da la constante de kaprekar es\n
%i\n", num1);
}else{
printf("\nEL resultado de la resta es\n%i\n", num1);
}
num_a_vector(num1, ar1);
}while(num1!=6174);

return 0;
}

int ordas(int ar2[], int n){


int c, d, t;

for (c = 0 ; c < ( n - 1 ); c++)


{
for (d = 0 ; d < n - c - 1; d++)
{
if (ar2[d] > ar2[d+1])
{
t = ar2[d];
ar2[d] = ar2[d+1];
ar2[d+1] = t;
}
}
}
}

int ordes(int ar3[], int n){


int c, d, t;
for (c = 0 ; c < ( n - 1 ); c++)
{
for (d = 0 ; d < n - c - 1; d++)
{
if (ar3[d] < ar3[d+1])
{
t = ar3[d];
ar3[d] = ar3[d+1];
ar3[d+1] = t;
}
}
}
return 0;
}

int copar(int ar4[], int ar5[], int n){


int i;
for(i=0; i<n; ++i){
ar4[i]=ar5[i];
}
return 0;
}

int num_a_vector(int t, int ar6[]){


int m, c, d, u;
m = t/1000;
c = (t-(m*1000))/100;
d = (t-(m*1000)-(c*100))/10;
u = (t-(m*1000)-(c*100)-(d*10));

ar6[0]=m;
ar6[1]=c;
ar6[2]=d;
ar6[3]=u;

return 0;
}

int vector_a_num(int ar7[]){


int m, c, d, u, r;

m = ar7[0];
c = ar7[1];
d = ar7[2];
u = ar7[3];

r = (m*1000) + (c*100) + (d*10) + u;

return r;
}