Работа с литерными переменными - 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.

Объяснение кода листинга программы

  1. Объявление константы: D=['0'..'9'] - Constant D задается как строка, содержащая диапазон от '0' до '9'.
  2. Объявление переменных: s:string - Variable s задается как строка (тип данных string); i:integer - Variable i задается как целое число (тип данных integer).
  3. Чтение ввода: write('Строка: '); readln(s); - Запрашивается пользовательский ввод строки и записывается в переменную s.
  4. Вычисление длины строки: i:=length(s); - Значение переменной i устанавливается равным длине введенной строки.
  5. Условие проверки на четность: if odd(i) then - Если длина строки нечетная, то выполнить следующие действия.
  6. Цикл обработки строки: while (i>1)and(not((s[i]in D)xor(not(s[i-1]in D))))do dec(i); - В цикле происходит проверка пар символов в строке, и если текущий символ и предыдущий символ не являются либо оба цифрами, либо оба не цифрами, то уменьшить значение i (позиция в строке).
  7. Вывод результата: write(i=1) - Вывести 1, если i равно 1, иначе вывести 0, в зависимости от результата предыдущих шагов. Функционально, это код проверяет является ли строка s палиндромом, если игнорировать все нецифровые символы.

Оцени полезность:

15   голосов , оценка 3.933 из 5
Похожие ответы