Помощь - Поиск - Пользователи - Календарь
Полная версия: Программа с циклом
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
goosberry
Задание такое: определить во сколько раз произведение положительных значений функции отличается от модуля произведения отрицательных значений функции y=((x^3)-1)sin2x на отрезке изменения аргумента от xn до xk с интервалом h.
В общем, я частично написала, а вот про произведение значений что-то никак не соображу. Помогите пожалуйста))

program zadacha;
uses
crt;
var x,y,xn,xk,h:real;
pol,otr:integer;
begin
write('x nachalnoye= ');
readln (xn);
write('x konechnoye= ');
readln (xk);
write('chag= ');
readln (h);
pol:=0;
otr:=0;
x:=xn;
while x<xk do
begin
y:=(sqr(x)*x-1)*sin(2*x);
if y<0 then otr:=otr+1 else pol:=pol+1;
writeln('x= ',x:3:3, ' y= ', y:3:3);
x:=x+h;
end;
readkey;
end.

volvo
Цитата
В общем, я частично написала
А зачем ты считаешь количество положительных и отрицательных значений? Тебе надо посчитать их произведения, и потом посмотреть, во сколько раз одно произведение больше другого (т.е., чему равно отношение pol/|otr|):
var pol, otr: real;
...
pol:=1; { все-таки, подсчет произведений, а не сумм }
otr:=1;
x:=xn;
while x<xk do
begin
y:=(sqr(x)*x-1)*sin(2*x);
if y<0 then otr:=otr*y else if y > 0 then pol:=pol*y;
writeln('x= ',x:3:3, ' y= ', y:3:3);
x:=x+h;
end;
{ Ну вот, произведения посчитаны, теперь находим pol / abs(otr) }

вроде бы нулевых значений ни в pol ни в otr быть не должно после "двойной" проверки - сначала на (y < 0), потом на (y > 0)...
goosberry
Цитата(volvo @ 27.03.2009 23:35) *

А зачем ты считаешь количество положительных и отрицательных значений? Тебе надо посчитать их произведения, и потом посмотреть, во сколько раз одно произведение больше другого (т.е., чему равно отношение pol/|otr|):

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