Обработка данных различных типов. - Pascal
Формулировка задачи:
На вход программе подается набор символов, заканчивающийся символом 0 (в программе на языке Бейсик символы можно вводить по одному в строке, пока не будет введен ноль, или считывать данные из файла). Ноль в этом наборе единственный. Среди этих символов обязательно присутствуют другие десятичные цифры. Напишите эффективную, в том числе и по используемой памяти, программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая будет составлять из имеющихся цифр число максимальной длины, которое читается одинаково как слева направо, так и справа налево. Нулей в числе быть не должно (ноль является признаком окончания ввода, а не одним из символов). Если таких чисел несколько, то надо вывести минимальное из них. Все имеющиеся в наборе цифры использовать не обязательно, но количество цифр в ответе должно быть максимально возможным. Например, пусть на вход подаются следующие символы: for i:=9991 downto 10 В данном случае программа должна вывести 19991
Помогите, пожалуйста, решить задачуРешение задачи: «Обработка данных различных типов.»
var n : array [#49..#57] of Integer; c, x : Char; i : Byte; begin for c := #49 to #57 do n[c] := 0; c := #0; x := #48; while Not EOLN and (c <> #48) do begin Read(c); if c in [#49..#57] then begin inc(n[c]); if c > x then x := c; end; end; if x > #48 then begin for c := #49 to Pred(x) do begin n[c] := n[c] div 2; for i := 1 to n[c] do Write(c); end; for i := 1 to n[x] do Write(x); for c := Pred(x) downto #49 do for i := 1 to n[c] do Write(c); end; end.
Объяснение кода листинга программы
- Объявлены три переменные: массив n, переменная c и переменная x. Значения массива n инициализированы нулями. Переменная c инициализируется значением #49, а переменная x - значением #48.
- Запускается цикл while, который будет выполняться до тех пор, пока не будет достигнут конец строки (EOLN) и значение переменной c не станет равным #48.
- Внутри цикла while выполняется еще один цикл for, который перебирает все допустимые значения переменной c (от #49 до #57). Если значение переменной c входит в этот диапазон, то к элементу массива n[c] прибавляется единица. Если значение переменной c больше, чем значение переменной x, то значение переменной x присваивается значение переменной c.
- После окончания цикла while проверяется значение переменной x. Если оно больше #48, то выполняется еще один цикл for, который перебирает все значения переменной c от #49 до значения переменной x (включительно). Для каждого значения переменной c из этого диапазона выполняется деление значения элемента массива n[c] на два и выводится на экран значение переменной c.
- Затем значение переменной x уменьшается на единицу, и для всех значений переменной c от #49 до значения переменной x (включительно) выводится на экран значение элемента массива n[c].
- Затем значение переменной x уменьшается на единицу, и для всех значений переменной c от значения переменной x (включительно) до #49 выводится на экран значение элемента массива n[c].
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д