Вводится не пустая последовательность символов, отдельные слова в ней разделены пробелами. Проверить, образуют ли целые числа, встречающиеся в заданной последовательности, арифметическую прогрессию
Категория: Delphi/Pascal
2012-02-01 22:03:50
code: #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.
Поделиться: