Помощь - Поиск - Пользователи - Календарь
Полная версия: Вычисление произведения синусов
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Лита
Задача такая: Вычислить (1+sin(0.1))(1+sin(0.2))...(1+sin(10))...
Составила следующую программу:
Код

var i,s,f:extended;
BEGIN
i:=0;
s:=1;
Repeat
i:=i+0.1;
f:=1+sin(i);
s:=s*f;
Until i>10;
writeln('summa=',s:10:2);
END.

в итоге он мне выводит ноль... при увеличении количества выводимых знаков после запятой выводит summa=0.000000000000017298. Думаю, что таким малым числом можно пренебречь.
И встал вопрос: правильный ли результат я получаю? huh.gif
Бродяжник
Похоже, что правильный. Если в каждой итерации цикла вывести значения S, то будет видно, что это число колеблется от 0 до примерно 2.9е+6. Это из-за того, что синус периодически меняет знак. И при i = 10.1 эта функция как раз близка к нулю. Так уж сложилось.
Лита
Так вот и смущает, что такая задача была предложена к решению... Или пытались таким образом проверить знание циклов, кроме For? huh.gif
Digitalator
Да, так и есть... я тут вначале (1 + sin()) не заметил rolleyes.gif
FreeMan
Алгоритм правильный, значит и результат правильный.
Лита
Цитата(FreeMan @ 2.11.04 17:13)
Алгоритм правильный, значит и результат правильный.

после долгих раздумий и копаний в справочнике, я тоже пришла к такому выводу... :D Спасибо... :p4:
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.