Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 07.11.2018
Сообщений: 9

Требуется переставить цифры числа так, чтобы полученное число было минимально возможным

07.11.2018, 09:52. Показов 2190. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как это написать с подпрограммами? С пояснениями , если не трудно

На вход программе подается набор символов, заканчивающийся
точкой (в программе на языке Бейсик символы можно вводить по одному в
строке, пока не будет введена точка, или считывать данные из файла).
Напишите эффективную, в том числе и по используемой памяти,
программу (укажите используемую версию языка программирования,
например, Borland Pascal 7.0), которая сначала будет определять, есть ли в
этом наборе символы, соответствующие десятичным цифрам. Если такие
символы есть, требуется переставить их так, чтобы полученное число было
минимально возможным. Ведущих нулей в числе быть не должно,
исключение – число 0, запись которого содержит ровно один ноль.
Если требуемое число составить невозможно, то программа должна
вывести на экран слово “NO”. А если возможно, то в первой строке
следует вывести слово “YES”, а во второй – искомое число. Например,
пусть на вход подаются следующие символы:
Do not 911 to 09 do.
В данном случае программа должна вывести
YES
10199
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.11.2018, 09:52
Ответы с готовыми решениями:

Переставить цифры числа так, чтобы полученное число было минимально возможным
На вход программе подается набор символов, заканчивающийся точкой (в программе на языке Бейсик символы можно вводить по одному в строке,...

Переставить местами цифры числа так, чтобы получилось максимальное число.
дано натуральное число N. Переставить местами его цифры так, чтобы получилось максимальное число, записанное теми же цифрами.

Переставить цифры числа так, чтобы образовалось максимальное число, записанное теми же цифрами
Дано натуральное число n.Переставить его цифры так,чтобы образовалось максимальное число,записанное теми же цифрами.

8
Модератор
10422 / 5710 / 3401
Регистрация: 17.08.2012
Сообщений: 17,366
09.11.2018, 02:05
Мой вариант программы, переделанный для проверочного сайта из программы вот в этой теме: Из всех встречающихся в тексте цифр составить наименьшее число:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
var
  d: array['0'..'9'] of integer; {массив количества соответствующих цифр}
  min, c: char; {минимальная цифра, счётчик для массива d}
  s: string; {входная строка}
  i: integer; {счётчик}
 
begin
  readln(s); {читаем строку}
  min := succ('9'); {назначаем минимум больший, чем максимальная по значению цифра}
  for i := 1 to length(s) do {цикл по всем символам строки}
    if s[i] in ['0'..'9'] {если очередной символ строки - цифра,}
      then begin {то}
        if (s[i] > '0') and (s[i] < min) {если цифра в диапазоне ['1'..(min-1)]}
          then min := s[i]; {то минимум равен текущему символу}
        inc(d[s[i]]) {подсчитываем количество конкретных цифр}
      end;
  if (min > '9') and (d['0'] = 1) {если минимум не найден, и в строке встречен только один 0}
    then min := '0'; {то min = '0'}
  if (min <= '9') {если минимум найден,}
    then begin {то выводим число}
      writeln('YES'); {число найдено}
      write(min); {печатаем минимальную цифру}
      dec(d[min]); {и уменьшаем найденое количество минимальной цифры}
      for c := '0' to '9' do {печатаем остальные цифры в порядке возрастания}
        for i := 1 to d[c] do {каждую цифру столько раз, сколько она встретилась (кроме min, естественно)}
          write(c); {печать цифры}
      writeln {переход на новую строку после вывода всех цифр}
    end
    else writeln('NO') {число не найдено (либо цифр нет, либо найдены только нули (два или более))}
end.
Программа подходит для любого диалекта паскаля.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
09.11.2018, 07:49
qazqaz185, А код в этой теме не подошел?

Переставить цифры числа так, чтобы полученное число было минимально возможным
0
Модератор
10422 / 5710 / 3401
Регистрация: 17.08.2012
Сообщений: 17,366
09.11.2018, 09:22
Puporev, Ваш код немного противоречит условию. В случае, если найдены только ноли (два и более), составить число, не содержащее ведущих нолей, с помощью перестановки цифр нельзя. Правда, мой код тоже не очень подходит: сразу не заметил, что нужно использовать подпрограммы.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
09.11.2018, 09:29
Если одни ноли, то выведет сразу 0, по моему так.
0
Модератор
10422 / 5710 / 3401
Регистрация: 17.08.2012
Сообщений: 17,366
09.11.2018, 09:50
Нет. По заданию
Цитата Сообщение от qazqaz185 Посмотреть сообщение
требуется переставить их так, чтобы полученное число было
минимально возможным. Ведущих нулей в числе быть не должно
То есть, нельзя заменить, к примеру, 0000 на 0.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
09.11.2018, 09:52
Ну и ладно.
0
Модератор
10422 / 5710 / 3401
Регистрация: 17.08.2012
Сообщений: 17,366
09.11.2018, 10:44
Не знаю, зачем здесь нужны подпрограммы... Наверное, для обучения. На скорую руку, с подпрограммами:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
function check(var t: string): boolean;
var i, z: integer;
begin
  z := 0;
  for i := length(t) downto 1 do
    if not(t[i] in ['0'..'9'])
      then delete(t, i, 1)
      else if t[i] = '0'
        then inc(z);
  check := (length(t) > z) or (length(t) = 1) and (z = 1)
end;
 
procedure sort(var t: string);
var i, j, k, min: integer;
    c: char;
begin
  for i := 1 to length(t) - 1 do
    begin
      min := i;
      for j := i + 1 to length(t) do
        if t[j] < t[min] then min := j;
      if min > i
        then begin
          c := t[i];
          t[i] := t[min];
          t[min] := c
        end
    end;
  for i := 1 to length(t) do
    if t[i] > '0'
      then begin
        c := t[1];
        t[1] := t[i];
        t[i] := c;
        break
      end
end;
 
var
  s: string;
  p: integer;
 
begin
  readln(s);
  p := pos('.', s);
  if p > 0 then delete(s, p, length(s) - p + 1);
  if check(s)
    then begin
      sort(s);
      writeln('YES');
      writeln(s)
    end
    else writeln('NO')
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.11.2018, 10:44
Помогаю со студенческими работами здесь

Приписать к 6-значному числу 523*** 3 цифры так, чтобы полученное число делилось на 7, 8, 9
Приписать к 6-значному числу 523*** 3 цифры так, чтобы полученное число делилось на 7, 8, 9. Program A1; var a,b,c,s,i:integer; ...

Дано натуральное число. Переставить его цифры так, чтобы образовалось наименьшее число, образованное теми же числами.
Дано натуральное число. Переставить его цифры так, чтобы образовалось наименьшее число, образованное теми же числами.

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

В которое двузначное число и какую цифру надо вставить посередине записи, чтобы полученное число было в 6 раз больше чем исходное?
В которое двузначное число и какую цифру надо вставить посередине записи, чтобы полученное число было в 6 раз больше чем исходное?

Переставить последний элемент массива так, чтобы перед ним не было элементов больших него
Дан одномерный массив из n различных целых чисел. Переставить последний элемент массива так, чтобы перед ним не было элементов больших...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru