Показать сообщение отдельно
Старый 19.12.2012, 20:01   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от 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.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070