Вводится не пустая последовательность символов, отдельные слова в ней разделены пробелами. Проверить, образуют ли целые числа, встречающиеся в заданной последовательности, арифметическую прогрессию — Pascal(Паскаль)

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.

Leave a Comment

8 + 2 =