Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Разбить число с перестановкой разрядов числа по убыванию

Ответить
Настройки темы
C/C++ - Разбить число с перестановкой разрядов числа по убыванию

Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 16:17, 07-02-2012

 

Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


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

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:55, 07-02-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Разбить число с перестановкой разрядов числа по убыванию

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBA - VBA - Упорядочить матрицу по убыванию модулей элементов x3 aka a-droo Программирование и базы данных 2 12-12-2011 01:16
Числа и клетки 1.0 OSZone Software Новости программного обеспечения 0 06-08-2010 10:30
Простые числа на Си++ nemo555 Программирование и базы данных 13 13-03-2007 21:24
четность числа elfoflorien Вебмастеру 6 18-09-2005 20:49
суммироват числа Artashes Программирование и базы данных 3 30-08-2003 18:31




 
Переход