Сравнение введённого и данного текста - Free Pascal
Формулировка задачи:
Определить совпадает ли введённый текст(числовой) с каким либо отрезком последовательности целых чисел 0,1,2...
пример:3, 678,101112
Решение задачи: «Сравнение введённого и данного текста»
textual
Листинг программы
const NY: array [Boolean] of String[3] = ('НЕ ',''); var s: String; i, j, k, p, q: Integer; begin repeat Write('Цифры: '); ReadLn(s); i:=Length(s); while (i>0) and (s[i] in ['0'..'9']) do Dec(i); if (i=0) and (Length(s)>1) then Break else WriteLn('*** Ошибочный ввод. Повторите...'); until False; for j:=1 to Length(s) div 2 do if Length(s) mod j=0 then begin Val(Copy(s,1,j),q,k); i:=1+j; while i+j-1<=Length(s) do begin p:=q; Val(Copy(s,i,j),q,k); if q-p<>1 then Break; Inc(i,j); end; if i+j-1>Length(s) then Break; end; WriteLn(NY[i+j-1>Length(s)],'совпадает'); end.
Объяснение кода листинга программы
- Объявлены следующие переменные: — s: String; — i, j, k, p, q: Integer; — NY: array [Boolean] of String[3] = ('НЕ ','');
- В цикле repeat осуществляется ввод строки s с помощью функции ReadLn и проверка корректности ввода. Если введенная строка некорректна, выводится сообщение об ошибке и цикл повторяется. Если строка корректна, цикл завершается.
- В цикле for j:=1 to Length(s) div 2 do осуществляется проверка на четность длины строки s. Если длина строки нечетная, то цикл выполняется.
- Внутри цикла for осуществляется проверка совпадения четных подстрок s. Для этого используется функция Val для преобразования подстроки в число и проверки его на равенство предыдущему числу. Если числа не совпадают, цикл прерывается.
- Если все четные подстроки совпадают, то выводится сообщение о совпадении.
- Код не обрабатывает ситуацию, когда строка s пустая или содержит только пробелы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д