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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2011, 10:01   #1
Urost
 
Регистрация: 08.10.2011
Сообщений: 4
По умолчанию Работа с целыми числами.

Задание: Дано натуральное число n. Переставить его цифры так, чтобы образовалось наименьшее число, записанное теми же цифрами.
Мое решение:
Код:
Program asd;
Var
	n, d, h, a, b: integer;
	s: string;
begin
	writeln('введите число');
	readln(n);
	str(n, s);
	d:= length(s);
	val(s[1], a, code);
	val(s[d], b, code);
Вопрос:Что делать дальше, как написать основное требование задания *Переставить его цифры так, чтобы образовалось наименьшее число, записанное теми же цифрами.*?Может кто помочь?Спасибо.



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 17.10.2011 в 10:26.
Urost вне форума Ответить с цитированием
Старый 17.10.2011, 10:23   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Например, можно отсортировать строку по убыванию (также, как массив).


И используйте тег [CODE] (значок # ) для кода вместо цитаты.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 17.10.2011, 10:35   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
  writeln('введите число');
  readln(n);
  str(n, s);

  {сортировка массива методом простых обменов ("пузырька") }
  for i:=1 to Length(s)-1 do
    for j:=i+1 to Length(s) do
      if s[i] > s[j] then
        begin
          OneChar:=s[i];
          s[i]:=s[j];
          s[j]:=OneChar
        end;
  WriteLn('minimal number is ',s);
  Readln;
p.s. правда, при решении подобной задачи возникает одна небольшая проблемка - а что делать, если в записи числа присутствует ноль?.. Формально - его можно записать первым (так будет в вышеприведённом решении), практически - по правилам математики незначащие нули отбрасываются... Но эта проблема должна разрешаться до начала программирования - т.е. Вы, как программист, должны решить, допустимо выносить ноль в начало числа. И если нет - то что нужно делать в данной ситуации..
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан файл f, компонент которого являются целыми числами... Наталья111 Общие вопросы Delphi 7 30.05.2011 15:34
Тестовый файл с целыми числами Crabobass Помощь студентам 2 29.04.2011 09:57
QBasic: Массив x(20) заполнить целыми случайными числами (1-100)... ski11 Помощь студентам 8 14.02.2010 14:08
Доступ к полям компонента TTable с большими целыми числами AleksP Общие вопросы Delphi 6 13.10.2008 18:41