Посчитать сумму всех элементов, до тех пор, пока последний член суммы будет равен заданному - Free Pascal
Формулировка задачи:
Добрый вечер, прошу знатоков проверить код. Есть последовательность: x=1+(1/1)*(/1*4)+(1*3/1*2)*(1/4^2)+(1*3*5/1*2*3)*(1/4^3)+...; Задача, в том чтобы просто посчитать сумму всех элементов, до тех пор, пока последний член суммы будет <=10e-12;
Как устроен алгоритм, в числителе происходит умножение на нечетное число, в начале 1,потом 3, 5 и т.д.
В знаменатели происходит умножение предыдущего результата на величину большую предыдущей на 1, было 1,потом умножаем на 2, потом на 3, на 4 и т.д. и на 4 в определенной степени, значит предыдущей результат еще умножаем на 4 каждый раз.
Правильно ли алгоритм реализован?
Вот сам код:
program workwrec;
uses
crt;
var
tmp,numerator,denominator,sum:double;
oddnum,count:cardinal;
begin
clrscr;
sum:=1;//т.к. к первому члену прибавляем 1
tmp:=1;
numerator:=1;//числитель
denominator:=1;//знаменатель
count:=1;
oddnum:=1;
while tmp>=10e-12 do
begin
numerator:=numerator*oddnum;
denominator:=denominator*count*4;
tmp:=numerator/denominator;
sum:=tmp+sum;
oddnum:=oddnum+2;
inc(count);
end;
end.Решение задачи: «Посчитать сумму всех элементов, до тех пор, пока последний член суммы будет равен заданному»
textual
Листинг программы
writeln('Сумма=',sum:0:12);
weite('sqrt(2)=',sqrt(2):0;12);
Объяснение кода листинга программы
- В начале программы на экран выводится строка
Сумма=с помощью функции writeln - Затем вычисляется сумма элементов, начиная с 0 и заканчивая 12, с помощью функции sum
- Далее на экран выводится строка
sqrt(2)=, а затем вычисляется квадратный корень из числа 2 с помощью функции sqrt - Результат вычисления квадратного корня числа 2 округляется до 12 знаков после запятой с помощью функции round
- Затем на экран выводится результат вычисления квадратного корня числа 2 с помощью функции weite