Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2010, 18:54   #1
lisenog
 
Регистрация: 21.10.2010
Сообщений: 4
По умолчанию Перестановка цифр в числе

Собственно задача:
Дано натуральное число N. Построить из цифр N максимально возможное число.

Нужно решение, с объяснением если можно)
Заранее спасибо!
lisenog вне форума Ответить с цитированием
Старый 21.10.2010, 18:56   #2
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

упорядочиваем цифры числа N по убыванию и все!
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 21.10.2010, 19:11   #3
lisenog
 
Регистрация: 21.10.2010
Сообщений: 4
По умолчанию

это я знаю, но как на pascal это записать?
lisenog вне форума Ответить с цитированием
Старый 21.10.2010, 19:22   #4
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Ну...Массивом делай!
_-Re@l-_ вне форума Ответить с цитированием
Старый 21.10.2010, 19:28   #5
lisenog
 
Регистрация: 21.10.2010
Сообщений: 4
По умолчанию

Во всех задачах используется целочисленная переменная N, значение которой не превосходит по модулю 2 млрд (если не указано иное). Нельзя использовать строковые переменные, массивы или другие структуры.

вот)
lisenog вне форума Ответить с цитированием
Старый 21.10.2010, 19:33   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
но как на pascal это записать?
А оч. просто.
Введи число в переменную типа integer (например в i)
Далее процедурой Str преобразуй ее в строку.
А после пройди сортировкой пузырьковой по строке, благо она представляет собой массив символов, и упорядочи по возрастанию.
Ферштеен? Примеры сортировки уже обсуждались во всех подробностях.
А вот хотя бы тут:http://www.programmersforum.ru/showthread.php?t=1688
Цитата:
Нельзя использовать строковые переменные
Тьфу блин...
Ну тогда в цикле дели на 10-ки и получай числа.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.10.2010, 19:35   #7
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

А...Ну тогды циклом.
1. Определяешь длину числа
2. Отщепляешь последнюю циферку и втыкаешь её в начало
3. Если получается число больше чем начальное, то max:=N;
4. Отщепляешь последнюю циферку и втыкаешь опять в начало.
5. Если N>Max то Max:=N
6. Возвращаещь число к первозданному виду.
7. Топаешь в пункт 2, только вместо последней циферки берёшь следующую, т.е. X-1(где X - количество цифр в числе)
Как-то так. Хотя, скорее всего, алгоритм неправильный....
_-Re@l-_ вне форума Ответить с цитированием
Старый 22.10.2010, 01:33   #8
Kingdom_Reborn
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 130
По умолчанию

Пришёл в голову вариант решения без использования символьных и строковых переменных...

Код:
var
  x, y, z: Longint;
begin
  ReadLn(x);
  y := x mod 10;
  x := x div 10;
  while x <> 0 do
  begin
    if x mod 10 <= y mod 10 then
      y := y * 10 + x mod 10
    else
    begin
      z := 0;
      while (x mod 10 > y mod 10) and (y > 0) do
      begin
        z := z * 10 + y mod 10;
        y := y div 10;
      end;
      y := y * 10 + x mod 10;
      while z <> 0 do
      begin
        y := y * 10 + z mod 10;
        z := z div 10;
      end;
    end;
    x := x div 10;
  end;
  WriteLn(y);
  ReadLn;
end.
Правда x mod 10 и y mod 10 можно один раз для одной итерации посчитать, но решил оставить так, для наглядности.

P. S. Сортировку вставкой напоминает...

Последний раз редактировалось Kingdom_Reborn; 22.10.2010 в 01:36.
Kingdom_Reborn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Количество цифр в числе Zelenyi Общие вопросы C/C++ 8 18.06.2010 03:24
Сколько одинаковых цифр в числе Banderas123 Помощь студентам 16 08.12.2009 06:31
Найти количество цифр в числе immor Помощь студентам 4 14.02.2009 22:30
Перестановка цифр в целом числе. Паскаль. Cheetah Помощь студентам 5 16.10.2008 21:07