Сравнение введённого и данного текста - 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 пустая или содержит только пробелы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д