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

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

1. Считываем входную строку, содержащую цифры и возможно другие символы.
2. Создаем переменную-строку "digits", в которую будем записывать только цифры из входной строки.
3. Используя цикл for, проходим по каждому символу во входной строке.
4. Если текущий символ является цифрой, добавляем его в "digits".
5. Создаем переменную-строку "palindrome" и инициализируем ее пустой строкой.
6. Запускаем вложенные циклы, чтобы сформировать все возможные палиндромы из цифр в "digits".
7. Для каждой пары цифр (i, j) в "digits" проверяем, является ли комбинация чисел i и j палиндромом.
8. Если комбинация i и j образует палиндром, сравниваем ее с текущим максимальным палиндромом в "palindrome".
9. Если она длиннее текущего максимального палиндрома, обновляем значение "palindrome".
10. По окончании циклов выводим полученный максимальный палиндром "palindrome".

Вот пример кода на языке Паскаль, реализующий описанный алгоритм:

pascal
var
inputString, digits, palindrome, currentNumber: string;
i, j, maxLen: integer;

begin
// Считываем входную строку
readln(inputString);

// Фильтруем только цифры из входной строки
for i := 1 to Length(inputString) do
begin
if (inputString[i] >= "0") and (inputString[i] <= "9") then
begin
digits := digits + inputString[i];
end;
end;

// Инициализируем максимальную длину палиндрома нулевым значением
maxLen := 0;

// Генерируем все возможные палиндромы
for i := 1 to Length(digits) do
begin
for j := i to Length(digits) do
begin
// Формируем число из комбинации текущих цифр
currentNumber := Copy(digits, i, j - i + 1);

// Проверяем, является ли число палиндромом
if currentNumber = ReverseString(currentNumber) then
begin
// Если число является палиндромом, проверяем его длину
if Length(currentNumber) > maxLen then
begin
// Обновляем максимальную длину и палиндром
maxLen := Length(currentNumber);
palindrome := currentNumber;
end;
end;
end;
end;

// Выводим полученный максимальный палиндром
writeln(palindrome);
end.


Эта программа будет считывать входную строку, фильтровать только цифры, генерировать все возможные палиндромы из цифр и выводить максимальный из них. Если во входной строке нет цифр, программа не выведет результат.