Даю 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, то пара не найдена и нужно вывести «НЕТ».
Ответ(ы) на вопрос:
Гость
Так как в задаче не требуется вводить числа с клавиатуры, то проще получать массив с помощью датчика. В этом случае диапазон (А,Б) нужно сильно уменьшить. Программа и пример работы - в прилагаемом файле.
Не нашли ответ?
Похожие вопросы