user8605, давайте разобьём задачу на две подзадачи:
1. Чтобы переставить числа из препарируемого числа, его нужно разбить на разряды, сохранив разряды в массив равный количеству разрядов
2. Произвести пузырьковую сортировку массива разрядов по убыванию.
3. Перемножить числа по разрядам x * 1000 x * 100 + x * 10 + x (это грубо, но решается упрощённым способом)
4. Вывести итоговое число.
Для начала решим первый вопрос -
По заданному натуральному(целому) числу, определить количество цифр и найти их сумму. Собственно, первую часть для затравки я решил, остальное для вас труда не должно составить. По крайней мере жду ваших размышлений над вопросами.
Код:
![Выделить весь код](images/misc/selectcode.png)
#include <iostream>
using namespace std;
// Функция расчитывающая количество чисел во введённом числе...
int Rasriad(int enterNumber)
{
int n = enterNumber, x = 0;
while (n != 0) {
n /= 10;
x++;
}
return x;
}
int main()
{
int enterNumber,
lenght = 0,
indexRas,
decimal = 1,
z,
*Array;
cout << "Enter Number: ";
cin >> enterNumber;
// определяет количество цифр в нем и их сумму.
lenght = Rasriad(enterNumber);
Array = new int [lenght]; // Создаём массив необходимой длины
for(int j = 1; j < lenght; j++)
decimal *= 10;
for(int i = 0; i < lenght; i++){
indexRas = enterNumber / decimal % 10;
Array[i] = indexRas; // Заполняем массив
decimal /= 10;
}
// Необходимые операции для сортировки по убыванию
// ...
// "сложение" отсортированого массива в одно число
// ...
// Вывести итоговое число
// ...
cin>>z;
return 0;
}
//---------------------------------------------------------------------------