Задача:
Вычислить [latex]\prod_{i=2}^{10}{\left(1-\frac{1}{i!} \right)^{2}}[/latex].
Тест:
[latex]\prod_{i=2}^{10}{\left(1-\frac{1}{i!} \right)^{2}}=0,1563[/latex]- тест пройден.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <stdio.h> int main() { double p=1; double a=1; for (int i=2; i<=10; i++) { a*=i; p*=(1.0-1.0/a)*(1.0-1.0/a); } printf("p= %0.4lf", p); return 0; } |
Для решения это задачи сделаем цикл. в котором будем вычислять произведение и факториал. Факториал будем вычислять применяя рекуррентные соотношения. Затем подставим факториал в формулу и вычислим произведение.
Посмотреть работу программы можно здесь.
Решение правильное, молодец, но
1) нету того единственного теста, который возможен. Т.к. программа возвращает всегда один и тот же результат, то таблица тестов будет содержать этот результат и комментарий, что тест пройден.
2) «В цикле я нахожу факториал , нахожу произведение и вывожу это на печать.» Все три действия в цикле? А по программе видно, что печать все же после цикла… Из Вашего предложения же этого не видно. Кроме того «я нахожу факториал , нахожу произведение» — и это все объяснение вычисления произведения? Ведь присутствует в программе довольно нетривиальный момент: рекуррентное нахождение факториала — его неплохо было бы описать в отчете, например, в виде математических выкладок или в виде словесного пояснения.
«будем вычислять сумму» , «вычислим сумму» откуда взялась сумма??? ведь по задаче нужно посчитать произведение.
Это случайно, исправила
Засчитано, 8 баллов (задача за октябрь в ноябре).