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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2009, 15:40   #1
Progs1024
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 33
По умолчанию Минимальное число

Задача состоит в следующем... Дано натуральное четырёхзначное число. Нужно найти минимальное натуральное 4х значное число, состоящее из тех же цифр, что и заданное.
Например. Дано число 5928. Нужно что бы выходило 2589.
Progs1024 вне форума Ответить с цитированием
Старый 09.10.2009, 16:01   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну я бы число переводил в строку, и сортировал элементы строки по возрастанию, получая минимально число.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.10.2009, 16:10   #3
Progs1024
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 33
По умолчанию

ну у меня есть идея использовать div... основная моя проблема это поставить числа по возрастанию
Progs1024 вне форума Ответить с цитированием
Старый 09.10.2009, 16:45   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
основная моя проблема это поставить числа по возрастанию
А ты почитай про сортировку. Любой способ - пузырьком, шелла.
Все это есть на http://www.delphiworld.narod.ru/_all_articles_.html.
Потом приводишь число в строку а строка это массив символов - его и сортирь
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.10.2009, 16:55   #5
Progs1024
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 33
По умолчанию

вот как раз таки разсортирить моя главная проблема... помоги пожалста как эт сделать?
Progs1024 вне форума Ответить с цитированием
Старый 09.10.2009, 17:04   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
помоги пожалста как эт сделать?
Иди по ссылке. Там поищи "Сортировка". Там все есть.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.10.2009, 17:13   #7
Progs1024
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 33
По умолчанию

спасибо большое!
Progs1024 вне форума Ответить с цитированием
Старый 09.10.2009, 18:21   #8
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

А если дано например число 4001 то ответ будет 1004. Т.е. если в данном числе есть 0 то надо както модифицировать сортировку.
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана

Последний раз редактировалось Plague; 09.10.2009 в 18:23. Причина: теги
Plague вне форума Ответить с цитированием
Старый 10.10.2009, 01:07   #9
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Цитата:
Сообщение от Plague Посмотреть сообщение
А если дано например число 4001 то ответ будет 1004. Т.е. если в данном числе есть 0 то надо както модифицировать сортировку.
В учебниках с решением этой задачи обычно делают так: при сортировке пузырьком, если речь идет о сравнивании первой пары элемментов, то их можно менять лиш если второй больше ноля. Просто ставим дополнительное ограничение внутрь самого цикла проверки - если сравниваем i-ый с i+1ым, то должно выполнятся:
if (i>1) or ((i=1) and (ar[2]<>0)) then begin // вместо ar[2] можно ar[i+1];
LeBron вне форума Ответить с цитированием
Старый 10.10.2009, 01:17   #10
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Цитата:
Сообщение от Stilet
А ты почитай про сортировку. Любой способ - пузырьком, шелла.
В такой задаче использование подобных методов сортировки выглядит извращением
Я бы применил линейный метод сортировки.
Вот пример решения:
Код:
  Nums: array[0..9] of Integer;
begin
  ReadLn (A);
  FillChar (Nums, SizeOf (Nums), 0);
  while A > 0 do
  begin
    Inc (Nums[A mod 10]);
    A := A div 10;
  end; {while}
  for A := 1 to 9 do
    if Nums[A] > 0 then
    begin
      Write (A);
      if Nums[0] > 0 then
      begin
        for I := 1 to Nums[0] do
          Write (0);
        Nums[0] := 0;
      end; {if}
      for I := 1 to Nums[A] - 1 do
        Write (A);
    end; {if}

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти из N чисел минимальное Shevali Помощь студентам 2 31.03.2009 17:23
Определить в тексте слово, содержащее минимальное число согласных stasig Помощь студентам 3 15.02.2009 13:11
Вывести число, предшествующее первому отрицательному и число, следующее за последним отрицательным Rid Паскаль, Turbo Pascal, PascalABC.NET 4 22.12.2008 16:50
Найти и вывести все слова,у котоpых число гласных букв пpевышает число согласных. Briz Помощь студентам 2 11.05.2008 00:56
Ввести число N и определить делится ли оно без остатка на число M (VBA) Ivanich Microsoft Office Excel 7 24.04.2008 19:43