bar(80,285,330,305);
helpwin(ea);
if ea mod 2 =0 then
begin
outtextxy(360,140,'В этом способе необходимо');
outtextxy(360,155,'самостоятельно вводить');
outtextxy(360,170,'значения функции.');
end
else
begin
outtextxy(360,140,'In this method you have');
outtextxy(360,155,'to put in values of ');
outtextxy(360,170,'function by yourself.');
end;
end
else
begin
bar(80,285,330,305);
setfillstyle(1,5);
bar(80,250,330,270);
helpwin(ea);
if ea mod 2 =0 then
begin
outtextxy(360,140,'В этом способе компьютер');
outtextxy(360,155,'сам вычесляет значения');
outtextxy(360,170,'функции по вводимой функции.');
end
else
begin
outtextxy(360,140,'In this method PC will');
outtextxy(360,155,'automaticly count the value');
outtextxy(360,170,'of function by the function');
outtextxy(360,185,'you enter ');
end;
end;
setcolor(2);
if ea mod 2 =0 then
begin
outtextxy(70,255,' По таблице(в ручную)');
outtextxy(70,295,' По расчетам(автом т.)');
end
else
begin
outtextxy(70,255,' By the table(by hand)');
outtextxy(70,295,' By calculations(automat.)');
end;
end;
until c=#13;
k:=x mod 2;
end;
procedure wwod1(ea:word;var y:array of double;var n:integer;var a,b:real);
{Окно ручного ввода функции}
var
i,p:integer;
s,f:string;
p1:real;
c:char;
begin
wwodn(ea,n);
if n=0 then
wwodn(ea,n);
newsc(ea);
wwodab(ea,a,b);
helpwin(ea);
if ea mod 2 =0 then
begin
outtextxy(360,140,'В этом окне необходимо');
outtextxy(360,155,'постепенно вводить');
outtextxy(360,170,'значения функции.');
outtextxy(360,185,'после каждого ввода');
outtextxy(360,200,'определенного значения');
outtextxy(360,215,'нажмите ENTER.');
end
else
begin
outtextxy(360,140,'In this window you have');
outtextxy(360,155,'to gradually enter the');
outtextxy(360,170,'values of functions.');
outtextxy(360,185,'After each enter press');
outtextxy(360,200,'ENTER key.');
end;
setfillstyle(1,9);
bar(40,200,330,300);
rectangle(45,205,325,295);
rectangle(47,207,323,293);
if ea mod 2 =0 then
outtextxy(56,227,'Введите 0 -е значение финкции:')
else
outtextxy(56,227,' Enter 0 -th value of function:');
for i:=0 to n do
begin
setfillstyle(1,0);
bar(137,250,180,273);
gotoxy(19,17);
setfillstyle(1,9);
read(p1);
y[i]:=p1;
bar(120,227,134,240);
str(i+1,s);
outtextxy(120,227,s);
bar(310,220,320,250);
end;
end;
procedure wwod2(ea:word;var ea1:word;var n:integer;var a,b:real;var st:string);
{Окно 2 меню автомат. подсчета}
var
i:integer;
c,k:char;
x:longint;
f:string;
begin
repeat
x:=-600000;
if keypressed then
c:=readkey;
c:='t';
newsc(ea);
setfillstyle(1,15);
bar(70,120,342,330);
setcolor(12);
rectangle(75,125,337,325);
rectangle(77,127,335,323);
settextstyle(0,0,0);
setfillstyle(1,11);
bar(80,170,330,190);
if ea mod 2 =0 then
begin
outtextxy(80,130,'Меню ввода параметров нахождения');
outtextxy(80,140,' интеграла');
outtextxy(80,180,' Ввести количество узлов(n)');
outtextxy(80,210,' Ввести приделы интегрирования');
outtextxy(80,240,' Ввести функцию');
outtextxy(80,270,' Считать интеграл');
outtextxy(80,300,' Выход ');
end
else
begin
outtextxy(80,130,'Menu of entering the parameters');
outtextxy(80,140,' of integral');
outtextxy(80,180,' Put in the number of units ');
outtextxy(80,210,' Enter the bounds of integral');
outtextxy(80,240,' Enter function');
outtextxy(80,270,' Count integral');
outtextxy(80,300,' Exit ');
end;
helpwin(ea);
if ea mod 2 =0 then
begin
outtextxy(360,140,' Нажмите Enter для');
outtextxy(360,155,' ввода количества узлов');
end
else
begin
outtextxy(360,140,' Press Enter to put');
outtextxy(360,155,' in the number of units');
end;
repeat
if keypressed then
begin
c:=readkey;
case c of
#80:
x:=x-1;
#72:
x:=x+1;
end;
setfillstyle(1,11);
case (abs(x) mod 5) of
0:
begin
bar(80,170,330,190);
setfillstyle(1,15);
bar(80,200,330,220);
bar(80,290,330,310);
helpwin(ea);
if ea mod 2 =0 then
begin
outtextxy(360,140,' Нажмите Enter для');
outtextxy(360,155,' ввода количества узлов');
end
else
begin
outtextxy(360,140,' Press Enter to put');
outtextxy(360,155,'in the number of units.');
end;
end;
1:
begin
bar(80,200,330,220);
setfillstyle(1,15);
bar(80,170,330,190);
bar(80,230,330,250);
helpwin(ea);
if ea mod 2 =0 then
begin
outtextxy(360,140,' Нажмите ENTER для ввода');
outtextxy(360,155,'приделов интегрирования.');
end
else
begin
outtextxy(360,140,' Press ENTER to put in');
outtextxy(360,155,'the bounds of integral.');
end;
end;
2:
begin
bar(80,230,330,250);
setfillstyle(1,15);
bar(80,200,330,220);
bar(80,260,330,280);
helpwin(ea);
if ea mod 2 =0 then
begin
outtextxy(360,140,' Нажмите ENTER для ввода');
outtextxy(360,155,'функции.');
end
else
begin
outtextxy(360,140,' Press ENTER to enter');
outtextxy(360,155,'function.');
end;
end;
3:
begin
bar(80,260,330,280);
setfillstyle(1,15);
bar(80,230,330,250);
bar(80,290,330,310);
helpwin(ea);
if ea mod 2 =0 then
begin
outtextxy(360,140,' Нажмите ENTER для начала');
outtextxy(360,155,'подсчета самого интеграла.');
end
else
begin
outtextxy(360,140,' Press ENTER to begin');
outtextxy(360,155,'integral calculations.');
end;
end;
4:
begin
bar(80,290,330,310);
setfillstyle(1,15);
bar(80,260,330,280);
bar(80,170,330,190);
helpwin(ea);
end;
end;
setcolor(12);
if ea mod 2 =0 then
begin
outtextxy(80,130,'Меню ввода параметров нахождения');
outtextxy(80,140,' интеграла');
outtextxy(80,180,' Ввести количество узлов(n)');
outtextxy(80,210,' Ввести приделы интегрирования');
outtextxy(80,240,' Ввести функцию');
outtextxy(80,270,' Считать интеграл');
outtextxy(80,300,' Выход ');
end
else
begin
outtextxy(80,130,'Menu of entering the parameters');
outtextxy(80,140,' of integral');
outtextxy(80,180,' Put in the number of units ');
outtextxy(80,210,' Enter the bounds of integral');
outtextxy(80,240,' Enter function');
outtextxy(80,270,' Count integral');
outtextxy(80,300,' Exit ');
end;
end;
until c=#13;
c:='t';
case (abs(x) mod 5) of
0:
begin
wwodn(ea,n);
end;
1:
wwodab(ea,a,b);
2:
begin
helpwin(ea);
setcolor(15);
setfillstyle(1,9);
bar(70,200,340,300);
rectangle(75,205,335,295);
rectangle(77,207,333,293);
if ea mod 2 =0 then
begin
outtextxy(86,227,'Введите функцию f(x):');
setcolor(14);
outtextxy(360,140,' В этом окне необходимо');
outtextxy(360,155,' ввести саму функцию.');
outtextxy(360,200,'Примечание: 1.данная программа ');
outtextxy(360,215,'распознает только ');
outtextxy(360,230,'элементарные функции.');
outtextxy(360,245,'(x,cos(x) и др.)');
outtextxy(360,260,’2.При неправильном вводе’);
outtextxy(360,275,’по умолчанию f(x)=x;’);
outtextxy(360,275,’3.Если после нажатия ENTER’);
outtextxy(360,275,’ничего не произошло, то
outtextxy(360,275,’занововведите функцию.’);
end
else
begin
outtextxy(86,227,'Enter function f(x):');
setcolor(14);
outtextxy(360,140,' In this window you have');
outtextxy(360,155,' to enter the function.');
outtextxy(360,200,'Note: This version of ');
outtextxy(360,215,'programm can indentify only ');
outtextxy(360,230,'simple functions, as');
outtextxy(360,245,'x,cos(x) and other.');
end;
setfillstyle(1,0);
bar(86,255,330,275);
readln;
gotoxy(13,17);
read(st);
writeln(st);
readln;
end;
3:if (n<=0)or(a=b)or(st='') then
error(ea);
4:
halt;
end;
until (n>0)and(a<>b)and(st<>'')and((abs(x) mod 5)=3);
end;
procedure win3(ea:word;n:integer;a,b:real;int:double;f:string;h:array of double;var k:word);
{Последнее окно просмотра результатов}
var
i:integer;
c:char;
x:longint;
p1,p:string;
y:array[0..16] of double;
begin
funktia(n,a,b,y,1,f);
f:='('+f+')'+'dx =';
repeat
x:=-600000;
newsc(ea);
setfillstyle(1,2);
bar(170,120,490,360);
setcolor(14);
rectangle(175,125,485,355);
rectangle(177,127,483,353);
settextstyle(0,0,0);
setfillstyle(1,1);
bar(180,170,480,190);
if ea mod 2 =0 then
begin
outtextxy(180,135,Функция распознана.Интеграл подсчитан.');
outtextxy(180,180,' Посмотреть значение интеграла');
outtextxy(180,210,'Посмотреть коэффициенты Ньютона-Котеса');
outtextxy(180,240,' Посмотреть значения функции');
outtextxy(180,270,' Посмотреть график' );
outtextxy(180,300,' Считать снова');
outtextxy(180,330,' Выход ');
end
else
begin
outtextxy(180,135,'Function Indentified.Integral counted.');
outtextxy(180,180,' View value of integral');
outtextxy(180,210,' View Newton-Cotes coefficients');
outtextxy(180,240,' Veiw values of function');
outtextxy(180,270,' View graphik ' );
outtextxy(180,300,' Count again');
outtextxy(180,330,' Exit ');
end;
repeat
if keypressed then
begin
c:=readkey;
case c of
#80:
x:=x-1;
#72:
x:=x+1;
end;
setfillstyle(1,1);
case (abs(x) mod 6) of
0:
begin
bar(180,170,480,190);
setfillstyle(1,2);
bar(180,200,480,220);
bar(180,320,480,340);
end;
1:
begin
bar(180,200,480,220);
setfillstyle(1,2);
bar(180,170,480,190);
bar(180,230,480,250);
end;
2:
begin
bar(180,230,480,250);
setfillstyle(1,2);
bar(180,200,480,220);
bar(180,260,480,280);
end;
3:
begin
bar(180,260,480,280);
setfillstyle(1,2);
bar(180,230,480,250);
bar(180,290,480,310);
end;
4:
begin
bar(180,290,480,310);
setfillstyle(1,2);
bar(180,260,480,280);
bar(180,320,480,340);
end;
5:
begin
bar(180,320,480,340);
setfillstyle(1,2);
bar(180,290,480,310);
bar(180,170,480,190);
end;
end;
if ea mod 2 =0 then
begin
outtextxy(180,135,'Функция распознана.Интеграл подсчитан.');
outtextxy(180,180,' Посмотреть значение интеграла');
outtextxy(180,210,'Посмотреть коэффициенты Ньютона-Котеса');
outtextxy(180,240,' Посмотреть значения функции');
outtextxy(180,270,' Посмотреть график ' );
outtextxy(180,300,' Считать снова');
outtextxy(180,330,' Выход ');
end
else
begin
outtextxy(180,135,'Function Indentified.Integral counted.');
outtextxy(180,180,' View value of integral');
outtextxy(180,210,' View Newton-Cotes coefficients');
outtextxy(180,240,' Veiw values of function');
outtextxy(180,270,' View graphik ' );
outtextxy(180,300,' Count again');
outtextxy(180,330,' Exit ');
end;
end;
until c=#13;
c:='t';
case (abs(x) mod 6) of
0:begin
setcolor(15);
setfillstyle(1,12);
bar(140,200,490,280);
rectangle(145,205,485,275);
rectangle(147,207,483,273);
settextstyle(2,0,1);
setusercharsize(1,1,5,1);
outtextxy(170,210,'S');
settextstyle(2,0,4);
str(a:3:3,p);
outtextxy(160,257,p);
str(b:3:3,p);
outtextxy(160,212,p);
settextstyle(3,0,2);
outtextxy(180,224,f);
p:='';
str(abs(int):7:3,p);
outtextxy(190+length(f)*12,224,p);
readln;
end;
1:
begin
newsc(ea);
setfillstyle(1,2);
bar(170,120,490,180+n*15);
setcolor(14);
rectangle(175,125,485,175+n*15);
rectangle(177,127,483,173+n*15);
if ea mod 2 =0 then
begin
outtextxy(180,130,'Коэффициенты Ньютона-Котеса:');
outtextxy(180,140+(n+1)*15,'Нажмите ENTER для продолжения');
end
else
begin
outtextxy(180,130,'Newton-Cotes coefficients:');
outtextxy(180,140+(n+1)*15,'Press ENTER to continue');
end;
hkoef(n,h);
for i:=0 to n do
begin
str(i,p);str(h[i]:2:4,p1);
p:='H'+p+' = '+p1;
outtextxy(180,140+i*15,p);
end;
readln;
end;
2:begin
newsc(ea);
setfillstyle(1,2);
bar(170,120,490,180+n*15);
setcolor(14);
rectangle(175,125,485,175+n*15);
rectangle(177,127,483,173+n*15);
if ea mod 2 =0 then
begin
outtextxy(180,130,'Значения функции:');
outtextxy(180,140+(n+1)*15,'Нажмите ENTER для продолжения');
end
else
begin
outtextxy(180,130,'Values of function:');
outtextxy(180,140+(n+1)*15,'Press ENTER to continue');
end;
for i:=0 to n do
begin
str(i,p);str(y[i]:2:4,p1);
p:='Y'+p+' = '+p1;
p1:='';
outtextxy(180,140+i*15,p);
str((a+i*(b-a)/n):2:4,p1);
str(i,p);
if ea mod 2 = 0 then
p:=',При '+'X'+p+' = '+p1
else
p:=',When '+'X'+p+' = '+p1;