Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Разбить число с перестановкой разрядов числа по убыванию (http://forum.oszone.net/showthread.php?t=227275)

user8605 07-02-2012 16:17 1853632

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

Drongo 07-02-2012 16:55 1853651

user8605, давайте разобьём задачу на две подзадачи:

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

Для начала решим первый вопрос - По заданному натуральному(целому) числу, определить количество цифр и найти их сумму. Собственно, первую часть для затравки я решил, остальное для вас труда не должно составить. По крайней мере жду ваших размышлений над вопросами.

Код:

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



Время: 11:59.

Время: 11:59.
© OSzone.net 2001-