Цитата:
Сообщение от vlados
А что скажите на счет этой работы:
|
Ну что же, если я понял правильно, то так. Прежде всего, поскольку оба неравенства в определении b - нестрогие, то это значит, что при x=0.5 результаты вычисления b по обеим ветвям должны совпасть, откуда сразу находим c=2.5. Дальше просто:
Код:
Var
x0,xk,dx,b,X,Y:real;
i,N,NnegY,NposX:Byte;
Function Max3(m1,m2,m3:real):real;
function Max2(p1,p2:real):real;
begin
If p1>p2 then Max2:=p1 else Max2:=p2;
end;
begin
Max3:=Max2(Max2(m1,m2),m3);
end;
Begin
Write('x0= ');
Readln(x0);
Write('xk= ');
Readln(xk);
Write('dx= ');
Readln(dx);
N:=Round((xk-x0)/dx);
NposX:=0;
NnegY:=0;
For i:=0 to N do
begin
X:=x0+dx*i;
Write('X=',X:6:3);
If X>0 then Inc(NposX);
If X<0.5 then b:=1.25 else b:=X*X+1;
Y:=Sqr(X-b)-Max3(X,b,2.5);
Writeln(' Y=',Y:12:4);
If Y<0 then Inc(NnegY);
end;
Writeln;
Writeln('Number of positive X values is ',NposX);
Writeln('Number of negative Y values is ',NnegY);
Readln;
End.