Добавить к последовательности наименьшее число символов так, чтобы последовательность стала палиндромом - Pascal
Формулировка задачи:
Даны натуральное число N и символы S[1],...,S[n].Преобразовать последовательность S[1],...,S[n], добавив к ней наименьшее число символов S[n+1],...,S[m] так, чтобы последовательность S[1],...,S[m] стала палиндромом: S[1]=S[m],S[2]=S[m-1] и т.д.
Решение задачи: «Добавить к последовательности наименьшее число символов так, чтобы последовательность стала палиндромом»
textual
Листинг программы
var s: array [1..255] of char; i, j, n: integer; begin write('n = '); readln(n); writeln('Enter symbols:'); for i := 1 to n do begin write('s(', i, ') = '); readln(s[i]) end; writeln('Source array:'); for i := 1 to n do write(s[i]); writeln; i := n; while s[i] = s[i - 1] do dec(i); for j := i - 1 downto 1 do begin inc(n); s[n] := s[j] end; writeln('Result:'); for i := 1 to n do write(s[i]); readln end.
Объяснение кода листинга программы
- Создается переменная
s
типаarray [1..255] of char
. Это массив символов, который будет использоваться для хранения последовательности. - Создаются три переменные
i
,j
иn
типаinteger
. Они будут использоваться для итерации по массиву и контроля над процессом изменения последовательности. - Выводится сообщение
n =
, после чего считывается значение переменнойn
с помощью функцииreadln()
. - Выводится сообщение
Enter symbols:
, после чего пользователю предлагается ввести символы для добавления в последовательность. - Запускается цикл
for
, который повторяетсяn
раз. В каждой итерации цикла выводится сообщениеs(i) =
и считывается символ с помощью функцииreadln()
. Этот символ добавляется в массивs
. - Выводится сообщение
Source array:
, после чего выводятся все символы из массиваs
. - Запускается еще один цикл
for
, который начинается сi = n
и продолжается до тех пор, пока символ в позицииi
не станет равным символу в позицииi-1
. В каждой итерации цикла увеличивается значениеi
на единицу. - Для каждого символа в массиве
s
, начиная с позицииi-1
и заканчивая позициейi
, происходит операция инкрементаinc(n)
. Это увеличивает значениеn
на единицу. - Затем происходит операция
s[n] := s[j]
. Это замена символа в позицииn
на символ в позицииj
. - Выводится сообщение
Result:
, после чего выводятся все символы из массиваs
. - Считывается символ с помощью функции
readln()
и выводится сообщениеn =
с новым значениемn
. - Цикл
while
продолжается до тех пор, пока символ в позицииi
не станет равным символу в позицииi-1
. - После окончания цикла
while
выводится сообщениеn =
с новым значениемn
. - Выводится сообщение
Readln()
для завершения программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д