Войти

Показать полную графическую версию : Разбить число с перестановкой разрядов числа по убыванию


user8605
07-02-2012, 16:17
Здравствуйте. Помогите решить задачу. Не могу разобраться с тем, что конкретно нужно сделать чтобы получить конечный результат.
Вот задача : Дано натуральное число n . Переставить его цифры так, чтобы образовалось максимальное число, записанное теми же цифрами.

Drongo
07-02-2012, 16:55
user8605, давайте разобьём задачу на две подзадачи:

1. Чтобы переставить числа из препарируемого числа, его нужно разбить на разряды, сохранив разряды в массив равный количеству разрядов
2. Произвести пузырьковую сортировку массива разрядов по убыванию.
3. Перемножить числа по разрядам x * 1000 x * 100 + x * 10 + x (это грубо, но решается упрощённым способом)
4. Вывести итоговое число.

Для начала решим первый вопрос - По заданному натуральному(целому) числу, определить количество цифр и найти их сумму. (http://www.oszone.net/go.php?url=http://forum.oszone.net/post-910225-4.html) Собственно, первую часть для затравки я решил, остальное для вас труда не должно составить. По крайней мере жду ваших размышлений над вопросами.

#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;
}
//---------------------------------------------------------------------------




© OSzone.net 2001-2012