Посчитать сумму всех элементов, до тех пор, пока последний член суммы будет равен заданному - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д