Ню вот примерно
-=-=
Код
program KKR1;
{uses crt;} var
E,a,b,s,h,R,x,d,c,integ,integlast:real;
s1:String;
i:integer;
p:Char;
n:longint;
function func(x:real):real; {}
begin {}
if x<=-2*R then func:=d {}
else {}
if x<=0 then func:=sqrt(x*(-x-2*R)) {}
else {}
if x>2*R then func:=c {}
else {}
func:=-sqrt(x*(-x+2*R)) {}
end; {}
Procedure ClScr;Assembler;
asm
mov ax,3
int 10h
end;
Procedure OutText(sss:String);
Begin
s1:=sss; {в/Є/ Џ бЄ «м ¬ «ҐмЄ® Ґ 室Ёв Ґ Ј®«®Ў «млҐ ЇаҐ¬ҐлҐ }
asm
mov dx,offset s1+1 {+1 Є®а४вЁа®ўЄ }
{ᬥ饨Ґ Є ЇҐаҐ¬Ґ®© ў Є®в®а®© Ўг¤Ґв еа Ёвбп ўлў®¤Ё¬ бва®Є }
mov ah,9 {дЄж ўлў®¤ }
int 21h {DOS interrypt}
end;
end;
Procedure InitData;{вгв бва Ёў Ґ¬ ॣЁбв DS ᥣ¬Ґв ¤ ле}
{вॡгҐвбп ®¤Ё а § ў б ¬®¬ з «Ґ}
Var
Data:Word;
BEGIN
Data:=DSeg;
asm
mov ax,data{ ¤аҐб ᥣ¬Ґв ¤ ле ў ॣЁбва Їа®ж }
mov ds,ax { ¤аҐб ў ॣЁбв DS в/Є/ ® ®вўҐз Ґв § ᥣ¬Ґв ¤ ле }
xor ax,ax {®Ўг« ўбпЄЁ© б«гз ©}
end;
END;
Procedure MCurXY(x,y:Byte);Assembler;{¤«п ЇҐаҐ¬ҐйҐЁп Єгаб®а }
asm
mov ah,02 {;function moving the cursor}
mov bh,0 {;screen number}
mov dh,y {;x-posit}
mov dl,x {;y-posit}
int 10h {;BIOS INTerrypt}
end;
Procedure WaitKey;Assembler;
asm
mov ah,0
int 16h
end;
{=============}
{=============}
{=============}
begin {}
{ўаҐ§г«мв ⥠Їа®Ја ¬¬Ёа®ў Ёп ў®§ЁЄ ў®Їа®б Ї®зҐ¬г ASM Ґ Ґ 室Ёв}
{Ґ Ј«®Ў «млҐ ЇҐаҐ¬ҐлҐ}
InitData; {}
ClScr; {}
MCurXY(5,5);
OutText('Ї®пв® § 祬 Їа®жҐ¤ MCyrXY$'); {Џа®Ў :) }
{ЇаЁ¬Ґз ЁҐ § Є -=$=- ®Ўп§ ⥫Ґ в/Є/ Ґв® Є®Ґж бва®ЄЁ}
WaitKey; {}
ClScr; {}
repeat
repeat
OutText('‚ўҐ¤ЁвҐ A and B (a<b):$');readln(a,B); {}
until a<b; {}
repeat {}
OutText('‚ўҐ¤ЁвҐ R (R>0):$');readln®; {}
until r>0; {}
repeat {}
OutText('‚ўҐ¤ЁвҐ d (d<0):$');readln(d); {}
until d<0; {}
repeat {}
OutText('‚ўҐ¤ЁвҐ c (c>0):$');readln©; {}
until c>0; {}
repeat {}
OutText('‚ўҐ¤ЁвҐ E (E>0):$');readln(E); {}
until E>0; {}
ClScr;
writeln(' a=',a:5:2,' b=',b:5:2,' d=',d:5:2,' c=',c:5:2,' R=',r:5:2, ' E=',E:2:4); {}
OutText('‚ᥠЇа ўЁ«м® (y/n):$'); {}
readln(p); {}
until ((p='y') or (p='Y')); {повторять ввод данных пока нет подтверждения о его правильности} {}
ClScr; {}
OutText('Please wait$'); {}
{}
repeat {}
begin {}
ClScr; {}
n:=1; {г вҐЎп ® 0 Ўл«}
writeln('n=',n); {}
h:=(b-a)/n;
s:=0; {}
for i:=1 to n do {}
begin {}
x:=a+i*h; {}
s:=s+func(x); {}
end; {}
Integlast:=Integ; {}
n:=n*2; {}
Integ:=h*s;
end until (abs(Integ-Integlast)<E); {}
ClScr; {}
writeln('Значение интеграла на интервале [',a:0:2,',',b:0:2,'] для функции,'); {}
writeln('заданной графически равно: ',Integ:0:4); {}
WaitKey; {}
end. {}
{}
{}