Определить является ли данная последовательность геометрической прогрессией - Free Pascal
Формулировка задачи:
Добрый день! Помогите пожалуйста с задачей. Надо сделать во Free Pascal БЕЗ использования массива. Задача: Вводится последовательность натуральных чисел. Признак конца ввода – 0. определить является ли последовательность геометрической прогрессией.
Решение задачи: «Определить является ли данная последовательность геометрической прогрессией»
textual
Листинг программы
var
q : double;
curr, prev : integer;
isGeom : boolean = true;
begin
repeat
write('->'); readln(curr);
if (q = 0) and (prev > 0) then q := curr / prev;
if curr <> 0 then
begin
isGeom := isGeom and ((prev = 0) or (curr / prev = q));
prev := curr;
end;
until curr = 0;
writeln(isGeom);
end.
Объяснение кода листинга программы
- Переменная
qинициализируется значением 0. - Переменные
currиprevинициализируются значениями 0. - Переменная
isGeomинициализируется значением true. - Входим в цикл while, который продолжается до тех пор, пока значение переменной
currне станет равным 0. - На каждой итерации цикла пользователю выводится символ
->, а затем считывается значение переменнойcurr. - Если значение переменной
qравно 0 и значение переменнойprevбольше 0, то значение переменнойqприсваивается результат деления значения переменнойcurrна значение переменнойprev. - Если значение переменной
currне равно 0, то выполняется следующая последовательность действий:- Значение переменной
isGeomустанавливается в true, если значение переменнойprevравно 0 или результат деления значения переменнойcurrна значение переменнойprevравен значению переменнойq. - Значение переменной
prevприсваивается значение переменнойcurr.
- Значение переменной
- После завершения цикла выводится значение переменной
isGeom. - Если значение переменной
isGeomравно true, то это означает, что данная последовательность является геометрической прогрессией.