Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Программа с циклом

Автор: goosberry 28.03.2009 2:13

Задание такое: определить во сколько раз произведение положительных значений функции отличается от модуля произведения отрицательных значений функции 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 28.03.2009 3:35

Цитата
В общем, я частично написала
А зачем ты считаешь количество положительных и отрицательных значений? Тебе надо посчитать их произведения, и потом посмотреть, во сколько раз одно произведение больше другого (т.е., чему равно отношение 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 28.03.2009 13:15

Цитата(volvo @ 27.03.2009 23:35) *

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

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