Работа с литерными переменными - Pascal
Формулировка задачи:
Помогите пожалуйста с задачей (Pascal).
Работа с функциями: CHR, ORD, PRED, SUCC.
В заданный непустой текст входят только цифры и буквы. Длина текста не более 12 символов.
Определить, удовлетворяется ли следующее свойство:
Текст состоит из чередования букв и цифр, причем если текст начинается с буквы, то он должен и заканчиваться буквой, если с цифры – цифрой (например: 1р2о3р4и4п3, p5g6e4d).
Решение задачи: «Работа с литерными переменными»
textual
Листинг программы
const D=['0'..'9'];
var s:string;i:integer;
begin
write('Строка: '); readln(s); i:=length(s);
if odd(i)
then while (i>1)and(not((s[i]in D)xor(not(s[i-1]in D))))do dec(i);
write(i=1)
end.
Объяснение кода листинга программы
- Объявление константы:
D=['0'..'9']- ConstantDзадается как строка, содержащая диапазон от '0' до '9'. - Объявление переменных:
s:string- Variablesзадается как строка (тип данных string);i:integer- Variableiзадается как целое число (тип данных integer). - Чтение ввода:
write('Строка: '); readln(s);- Запрашивается пользовательский ввод строки и записывается в переменнуюs. - Вычисление длины строки:
i:=length(s);- Значение переменнойiустанавливается равным длине введенной строки. - Условие проверки на четность:
if odd(i) then- Если длина строки нечетная, то выполнить следующие действия. - Цикл обработки строки:
while (i>1)and(not((s[i]in D)xor(not(s[i-1]in D))))do dec(i);- В цикле происходит проверка пар символов в строке, и если текущий символ и предыдущий символ не являются либо оба цифрами, либо оба не цифрами, то уменьшить значениеi(позиция в строке). - Вывод результата:
write(i=1)- Вывести 1, еслиiравно 1, иначе вывести 0, в зависимости от результата предыдущих шагов. Функционально, это код проверяет является ли строкаsпалиндромом, если игнорировать все нецифровые символы.