/**
 * kaprekar.c -- проверка существования постоянной Капрекара
 *
 * Программу, позволяющая на тестовых примерах проверить существование постоянной Капрекара, 
 * то есть числа, к которому сходится следующий алгоритм:
 *   - Возьмем произвольное n-значное число, в котором не все цифры равны
 *   - Получим новое число, сортировкой цифр по убыванию
 *   - Получим второе новое число, сортировкой цифр по возрастанию
 *   - Вычтя из первого числа второе, получим новое
 *   - Если результат не равен исходному числу, перейти к п.2
 *
 * Copyright (c) 2009, Student Name <student@cs.karelia.ru>
 *
 * This code is licensed under a MIT-style license.
 */ 

#include <stdio.h>
#include <stdlib.h>

#define NUM_LENGTH 4

int main(int argc, char** argv) 
{
    int digit_sum[NUM_LENGTH]; /* цифры текущего числа */
    int digit_min[NUM_LENGTH]; /* цифры числа по возрастанию */
    int digit_max[NUM_LENGTH]; /* цифры числа по убыванию */
    int i = 0; /* счетчик */
    int num = 0; /* вводимое число */

    /* чтение ввода до тех пор, пока не будет правильное число */
    fprintf(stdout, "Введите число %i знаков: ", NUM_LENGTH);
    fscanf(stdin, "%i", &num);

    /* Преобразование числа в массив */
    for (i = 0; i < NUM_LENGTH; i++)
    {
	digit_sum[i] = num - (num / 10) * 10;
        num = num / 10;
    }

    /* Обратное преобразование */
    num = 0;
    for (i = 0; i < NUM_LENGTH; i++)
    {
        num = num * 10 + digit_sum[NUM_LENGTH - i - 1];
    }

    fprintf(stdout, "Результат равен %d\n", num);

    return EXIT_SUCCESS;
}
