Определить, совпадает ли текст с каким-либо отрезком ряда abc…xyz - Pascal
Формулировка задачи:
Помогите с решением, пожалуйста! Если не трудно, то с объяснением
В заданный непустой текст входят только цифры и буквы. Длина текста не более 12 символов.
Определить, удовлетворяется ли следующее свойство:
Текст совпадает с каким-то отрезком ряда abc…xyz (например: klmnop);
Решение задачи: «Определить, совпадает ли текст с каким-либо отрезком ряда abc…xyz»
textual
Листинг программы
var s:string;
n,i,k:byte;
begin
repeat
writeln('Введите текст из строчных латинских букв и цифр длиной не более 12 символов');
readln(s);
n:=length(s);
k:=0;
for i:=1 to n do
if not(s[i] in ['a'..'z','0'..'9']) then k:=1;
if not(n in [1..12])or(k=1) then writeln('Ввод неверный, повторите')
until(n in [1..12])and(k=0);
if not (s[1] in ['a'..'z']) then write('Свойство не удовлетворяется')
else if n=1 then write('Свойство удовлетворяется')
else
begin
i:=2;
k:=0;
while (i<=n)and(k=0) do
if s[i]<>succ(s[i-1]) then k:=1
else inc(i);
if k=0 then write('Свойство удовлетворяется')
else write('Свойство не удовлетворяется');
end;
end.
Объяснение кода листинга программы
- Объявляется переменная
sтипа string для хранения вводимого текста. - Объявляются переменные
n,iиkтипа byte для хранения длины строки, индексов и проверки условий соответственно. - Пользователю предлагается ввести текст из строчных латинских букв и цифр длиной не более 12 символов.
- Вводимая строка
sсчитывается с помощью функцииreadln. - Получаем длину строки
nи устанавливаем начальное значение переменнойkравным 0. - В цикле
forпроверяется каждый символ в строкеs: если символ не является строчной латинской буквой или цифрой, устанавливаем переменнуюkравной 1. - Проверяем условия: длина строки должна быть от 1 до 12 символов и переменная
kдолжна быть равна 0. Если условия не выполнены, выводим сообщениеВвод неверный, повторитеи просим ввести текст заново. - Если введенное выражение не начинается с латинской буквы, выводим
Свойство не удовлетворяется. - Если длина строки равна 1, выводим
Свойство удовлетворяется. - Если начальное условие не выполняется, переходим к следующему блоку кода.
- Устанавливаем значение переменной
iравным 2 и переменнойkравным 0. - В цикле
whileпроверяется каждый символ строкиs. Если текущий символ не равен следующему в алфавитном порядке, устанавливаем переменнуюkравной 1, иначе увеличиваем значениеiна 1. - Если переменная
kосталась равной 0, выводимСвойство удовлетворяется, иначеСвойство не удовлетворяется.