Даю 25 баллов! Помогите, пожаалуйста!!! В чем ошибка? const EPS = 0.01; A = -100; B = 100; N=10; var Kol:integer; ch_tek:array[1..N] of Real; i : Byte; Fl:boolean; begin Fl:=False; For i:=1 to N do begin Repeat Readln(Ch_te...

Даю 25 баллов! Помогите, пожаалуйста!!! В чем ошибка? const EPS = 0.01; A = -100; B = 100; N=10; var Kol:integer; ch_tek:array[1..N] of Real; i : Byte; Fl:boolean; begin Fl:=False; For i:=1 to N do begin Repeat Readln(Ch_tek[i]); While (kol<10) do If(Ch_tek[i]>=A) and(Ch_tek[i]<=B) then kol:=kol+1; While (kol>1)do If (Ch_tek[i-1]-Ch_tek[i]) writeln(Ch_tek[i-1],' ',Ch_tek[i]); Fl:=True; end; if (FL=False) then writeln ('НЕТ'); end; Задача: Даны 10 чисел значения которых находятся в интервале от А до Б найти пару соседних чисел (заданных друг за другом) у которых значения отличаются на число меньшее чем EPS=0,01. Числа задаются последовательно. Если пары нет, то вывести слово «НЕТ». 1.Задать начальные данные: Kol:=0; Fl:boollean, Fl:=False. EPS:0.01 2.Задать границы А и B. 3.Организовать цикл с предусловием: While (kol<10)and(Fl=False) do 5. В цикле: 1) считываем текущее число Ch_tek; 2)Проверить является ли число, принадлежащим интервалу. Если – да, то увеличить счет подходящих чисел: If (Ch_tek>=A) and(Ch_tek<=B) then kol:=kol+1. 3) Если число не является первым (kol>1), то проверить разность с предыдущим и если она меньше Эпсилон (заданного числа), то вывести текущее и предыдущее, променять флаг на TRUE (истина); ИНАЧЕ: Pred_ch:=Ch_tek; 6. После выхода из цикла проверить: если количество FL=False, то пара не найдена и нужно вывести «НЕТ».
Гость
Ответ(ы) на вопрос:
Гость
Так как в задаче не требуется вводить числа с клавиатуры, то проще получать массив с помощью датчика. В этом случае диапазон (А,Б) нужно сильно уменьшить. Программа и пример работы - в прилагаемом файле.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы