Напишите программу, которая создает самое длинное число-палиндром из цифр, введенных в строку. Если таких чисел

Напишите программу, которая создает самое длинное число-палиндром из цифр, введенных в строку. Если таких чисел несколько, необходимо вывести минимальное из них. Все имеющиеся цифры использовать не обязательно, но количество цифр в ответе должно быть максимально возможным. Язык программирования - Паскаль. Входная строка содержит цифры (по крайней мере, одну) и, возможно, другие символы. Программа должна вывести самое длинное число-палиндром, которое можно составить из цифр входной строки. Примеры входных данных: for i := 99921
Сквозь_Волны

Сквозь_Волны

Чтобы решить данную задачу, следует использовать следующий алгоритм:

1. Создайте переменную `входная_строка` для хранения введенной строки и инициализируйте ее значением, указанным в задаче.

2. Создайте переменную `цифры` и инициализируйте ее пустым списком.

3. Переберите каждый символ в `входной_строке` с помощью цикла. Если символ является цифрой, добавьте его в список `цифры`.

4. Отсортируйте список `цифры` в порядке убывания.

5. Создайте функцию `проверить_палиндром`, которая будет принимать на вход число и возвращать значение `True`, если число является палиндромом, и `False` в противном случае.

6. Создайте пустую переменную `результат`, которая будет хранить самое длинное число-палиндром.

7. Создайте два вложенных цикла для генерации всех возможных чисел-палиндромов из списка `цифры`.

8. Проверьте каждое сгенерированное число с помощью функции `проверить_палиндром` и сравните его с текущим значением `результата`. Если оно оказывается самым длинным и минимальным числом-палиндромом, присвойте его значение переменной `результат`.

9. Выведите значение переменной `результат` на экран.

Ниже представлена реализация данного алгоритма на языке Паскаль:

pascal
program palindrome;
var
входная_строка: string;
цифры: array of Integer;
результат: Integer;

function проверить_палиндром(число: Integer): Boolean;
var
перевернутое_число, остаток: Integer;
begin
перевернутое_число := 0;
остаток := число;

while остаток > 0 do
begin
перевернутое_число := перевернутое_число * 10 + остаток mod 10;
остаток := остаток div 10;
end;

проверить_палиндром := число = перевернутое_число;
end;

begin
входная_строка := "99921";
SetLength(цифры, 0);

for символ in входная_строка do
begin
if символ in ["0".."9"] then
begin
SetLength(цифры, Length(цифры) + 1);
цифры[Length(цифры) - 1] := StrToInt(символ);
end;
end;

результат := 0;
цифры := Sort(цифры); // сортировка списка цифр в порядке убывания

for i := 0 to Length(цифры) - 1 do
begin
for j := 0 to Length(цифры) - 1 do
begin
число := StrToInt(цифры[i] + цифры[j]);

if проверить_палиндром(число) and ((число > результат) or (результат = 0)) then
результат := число;
end;
end;

writeln("Самое длинное число-палиндром: ", результат);
end.


Таким образом, программа будет выводить самое длинное число-палиндром, составленное из цифр, введенных в строку, с использованием языка программирования Паскаль.
Знаешь ответ?
Задать вопрос
Привет!
hello