program fys;
{ ************************************ }
var
p, code: integer; { описание переменных }
i, j, n: integer;
s, x: string;
A: array [1 .. 100] of integer;
{ начало функции, определяющей ариф. посл. i-ой строки }
function areprogress(n: integer): boolean;
var { секция объявления переменных }
j: integer; { переменные для прохождения по матрице (по столбцу) }
d: integer;
{ переменная разности между 2-ым и 1-ым элементом строки = "Шаг прогрессии" }
b: boolean; { результатирующая переменная }
begin
b := true; { изначально результат будет ИСТИННЫМ }
d := A[2] - A[1]; { вычисляем "Шаг прогрессии" }
for j := 3 to n do
if A[j] <> A[1] + ((j - 1) * d) then
b := false;
{ если арифм. прогрессия нарушается -> результат становится ЛОЖЬю }
areprogress := b; { функции присваиваем конечный, вычисленный результат }
end;
{ ---конец функции, определяющей ариф. посл. i-ой строки--- }
{ ---------------НАЧАЛО САМОЙ ПРОГРАММЫ--------------- }
begin
write('Vvedite stroky cisel (cerez probel): ');
readln(s); { считываем с клавы строку с числами }
j := 0; { обнуляем кол-во чисел в строке }
repeat { начало цикла записывающего числа из строки - в массив }
p := pos(' ', s); { смотрим где есть текущий пробел }
x := copy(s, 1, p - 1); { копируем число до пробела }
if p = 0 then
x := s; { если пробелов не осталось - то эта вся строка явл. числом }
val(x, i, code); { преобразовываем строку-число в ЧИСЛО }
if code = 0 then
begin { если элемент явл. целым числом?? }
inc(j); { увеличиваем счётчик кол-ва чисел в строке }
A[j] := i; { записываем текущее ЦЕЛОЕ число в МАССИВ }
end;
delete(s, 1, p); { удаляем из строки проверенное число }
until p = 0; { конец цикла }
n := j; { "n" присваиваем кол-во чисел (размер массива) }
writeln;
if areprogress(n) then
writeln('Obrazuetsya ARIF.PROGR.')
else
writeln('NE obrazuetsya ARIF.PROGR.');
readln;
end.