Определить, образует ли последовательность, составленная из дат, арифметическую или геометрическую прогрессию - Free Pascal
Формулировка задачи:
Несколько школьников выстроились в шеренгу. Для каждого школьника известен день его рождения
Определить, образует ли последовательность, составленная из этих чисел, арифмети¬ческую или геометрическую прогрессию
Решение задачи: «Определить, образует ли последовательность, составленная из дат, арифметическую или геометрическую прогрессию»
textual
Листинг программы
var
n, i, next, cur, prev: integer;
arith, geom: boolean;
begin
write('Введите кол-во школьников: ');
read(n);
write('Введите дни рождения школьников: ');
arith := true;
geom := true;
for i := 1 to n do
begin
read(next);
if i > 2 then
begin
if next - cur <> cur - prev then arith := false;
if next / cur <> cur / prev then geom := false;
end;
prev := cur;
cur := next;
end;
if arith then writeln('Последовательность образует арифметическую прогрессию');
if geom then writeln('Последовательность образует геометрическую прогрессию');
if not(arith or geom) then writeln('Последовательность не образует прогрессий');
end.
Объяснение кода листинга программы
- Ввод количества школьников и их дат рождения.
- Установка флагов arith и geom в истинное значение.
- Цикл по количеству школьников.
- В каждой итерации чтение следующей даты рождения.
- Проверка, является ли последовательность дат арифметической прогрессией.
- Проверка, является ли последовательность дат геометрической прогрессией.
- Если последовательность не является ни арифметической, ни геометрической прогрессией, то выводится сообщение об этом.
- Вывод сообщения о том, какая прогрессия была найдена.