Определить, образуют ли элементы файла арифметическую прогрессию - PascalABC.NET
Формулировка задачи:
Есть файл с числами,определить создают ли его элементы арифметическую прогресию
Решение задачи: «Определить, образуют ли элементы файла арифметическую прогрессию»
textual
Листинг программы
var
f: file of Integer;
n1, n2, delta: Integer;
begin
Assign(f, 'd:\test\03.dat');
Reset(f);
var check: 0 .. 1;
try
read(f, n1, n2);
delta := n2 - n1;
try
while not EOF(f) do
begin
n1 := n2;
Read(f, n2);
check := 1 div Ord((n2 - n1) = delta);
end;
WriteLn('в файле арифметическая прогрессия');
except
WriteLn( 'в файле не арифметическая прогрессия');
end;
except
writeln( 'Недостаточно данных в файле');
end;
Close(f);
end.
Объяснение кода листинга программы
- Объявляются переменные:
- f: file of Integer; - файл для чтения данных из файла
- n1, n2, delta: Integer; - для хранения первых двух элементов и разности между ними
- Устанавливается связь с файлом 'd:\test\03.dat' и считываются первые два элемента
- Вычисляется разность между вторым и первым элементом (delta)
- Запускается цикл, который считывает все элементы файла, начиная со второго
- Внутри цикла проверяется равенство разности между текущим и предыдущим элементом и разности, определенной на шаге 3. Если они равны, то переменной check присваивается значение 1, иначе 0
- После окончания цикла выводится сообщение о том, является ли последовательность арифметической прогрессией
- Если в процессе чтения файла возникла ошибка (EOF), то выводится сообщение о том, что в файле не арифметическая прогрессия
- Если в процессе чтения файла не хватило данных для вычисления прогрессии, то выводится сообщение об этом
- В любом случае файл закрывается после окончания работы с ним