procedure win2(ea:word;var k:word);
procedure wwodn(ea:word;var n:integer);
procedure wwodab(ea:word;var a,b:real);
procedure wwod1(ea:word;var y:array of double;var n:integer;var a,b:real);
procedure wwod2(ea:word;var ea1:word;var n:integer;var a,b:real;var st:string);
procedure win3(ea:word;n:integer;a,b:real;int:double;f:string;h:array of double;var k:word);
implementation
procedure proline(ea:word);
{Проседура полосы процесса}
var
i:integer;
f:string;
c:char;
begin
newsc(ea);
setcolor(15);
setfillstyle(1,7);
bar(160,150,460,260);
rectangle(165,155,455,255);
rectangle(167,157,453,253);
case (ea mod 2) of
0: outtextxy(180,170,' Идет работа .Ждите..');
1: outtextxy(180,170,' Working.Please wait..');
end;
setfillstyle(1,12);
setcolor(0);
rectangle(200,199,401,221);
for i:=1 to 9 do
line(200+i*20,200,200+i*20,220);
delay(20000);
for i:=1 to 100 do
begin
if ((i-1) mod 10)=0 then
line(200+((i-1) div 10)*20,200,200+((i-1) div 10)*20,220);
bar(round(200+2*(i-0.5)),200,200+2*i,220);
delay(1100);
setcolor(15);
setfillstyle(1,7);
bar(280,230,323,250);
str(i,f);
f:=f+'%';
outtextxy(290,235,f);
if (i mod 25) =0 then
bar(170,180,452,198);
if (ea mod 2)=0 then
case (i div 25) of
0:
outtextxy(170,190,'Подготовка ');
1:
outtextxy(170,190,'Расчет коеффициентов в многочлене');
2:
outtextxy(170,190,'Расчет коеффициентов Ньютона-Котеса');
3:
outtextxy(170,190,'Расчет интеграла');
end
else
case (i div 25) of
0:
outtextxy(170,190,'Prepearing');
1:
outtextxy(170,190,'Calculation of mnogochlen coeff.');
2:
outtextxy(170,190,'Calculation of Newton-Cotes coeff. ');
3:
outtextxy(170,190,'Calculation of integral');
end;
setfillstyle(1,12);
setcolor(0);
end;
end;
procedure winwwodn(ea:word);
{Окно ввода числа узлов интерполяции}
var
c:char;
f:string;
begin
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,' количество зн чений функции.');
outtextxy(360,240,' ВНИМАНИЕ : НАСТОЯТЕЛЬНО ');
outtextxy(360,250,' РЕКОМЕНДУЕТСЯ НЕ ВВОДИТЬ ');
outtextxy(360,260,' ЗНАЧЕНИЕ N БОЛЬШЕ 12 !! ');
end
else
begin
outtextxy(360,140,' In this window you have to ');
outtextxy(360,155,' put into the number. ');
outtextxy(360,170,' The accuracy of calculation ');
outtextxy(360,185,' and the number of function ');
outtextxy(360,200,' parameters will depend on ');
outtextxy(360,215,' this number. ');
outtextxy(360,240,' WARNING: IT IS HARDLY ');
outtextxy(360,250,' RECOMENDED NOT TO PUT IN ');
outtextxy(360,260,' NUMBER MORE THEN 12 !! ');
end;
setcolor(2);
setfillstyle(1,14);
bar(70,200,340,300);
rectangle(75,205,335,295);
rectangle(77,207,333,293);
if (ea mod 2) =0 then
begin
outtextxy(90,227,'Введите количество узлов(n):');
outtextxy(80,270,'ВНИМАНИЕ: При больших n возможна');
outtextxy(80,280,'некорректная работа компьютера!!');
end
else
begin
outtextxy(80,217,'Put in number of');
outtextxy(80,227,' interpolation units:');
outtextxy(80,270,'WARNING:if you use big number ');
outtextxy(80,280,'of units,PC wont work properly!');
end;
setfillstyle(1,0);
bar(190,240,230,255);
end;
procedure wwodn(ea:word;var n:integer);
{Процедура ввода узлов n}
var
ec,p:integer;
k,f:string;
x:integer;
c:char;
begin
newsc(ea);
winwwodn(ea);
repeat
repeat
winwwodn(ea);
gotoxy(25,16);
read(k);
val(k,p,ec);
if ec<>0 then
begin
error1(ea);
readln;
end;
until ec=0;
n:=p;
if n>12 then
begin
if keypressed then
c:=readkey;
c:='r';
setcolor(15);
setfillstyle(1,12);
bar(140,210,490,300);
rectangle(145,215,485,295);
rectangle(147,217,483,293);
if (ea mod 2) =0 then
begin
outtextxy(150,227,' Предупреждение!');
outtextxy(150,237,' Вы дейcтвительно хотите использовать');
outtextxy(150,250,' большое значение N ???');
end
else
begin
outtextxy(150,227,' Warning!! ');
outtextxy(150,237,' Do you realy want to use a big ');
outtextxy(150,250,' number interpolation units(N)??? ');
end;
sound(600);
delay(4000);
nosound;
setfillstyle(1,2);
bar(320,260,350,280);
setfillstyle(1,12);
bar(250,260,280,280);
repeat
if keypressed then
begin
c:=readkey;
if (c=#80) or (c=#72) or (c=#77) or (c=#75) then
x:=x+1;
setfillstyle(1,2);
if (x mod 2)=0 then
begin
bar(250,260,280,280);
setfillstyle(1,12);
bar(320,260,350,280);
end
else
begin
bar(320,260,350,280);
setfillstyle(1,12);
bar(250,260,280,280);
END;
end;
if (ea mod 2) =0 then
begin
outtextxy(255,267,'ДА');
outtextxy(325,267,'НЕТ');
end
else
begin
outtextxy(255,267,'YES');
outtextxy(325,267,'NO');
end;
until c=#13;
if abs(x mod 2)=1 then
begin
n:=0;
setcolor(15);
setfillstyle(1,2);
bar(160,200,460,280);
rectangle(165,205,455,275);
rectangle(167,207,453,273);
if (ea mod 2)=0 then
begin
outtextxy(180,227,'Для работы программы необходимо');
outtextxy(180,237,' заново ввести N.');
outtextxy(180,247,' Нажмите ENTER для продолжения.');
end
else
begin
outtextxy(180,227,' To continue you have to ');
outtextxy(180,237,' again put in N. ');
outtextxy(180,247,' Press ENTER to continue.');
end;
readln;
readln;
end;
end;
until n>0;
end;
procedure winwwodab(ea:word);
{Окно ввода приделов интегрирования}
var
f:string;
begin
helpwin(ea);
if (ea mod 2)=0 then
begin
outtextxy(360,140,' В этом окне необходимо');
outtextxy(360,155,' ввести сначала нижнее');
outtextxy(360,170,' значение интеграл и нажать');
outtextxy(360,185,' ENTER, а затем ввести');
outtextxy(360,200,' верхнее значение интеграла');
outtextxy(360,215,' и снова нажать ENTER.');
end
else
begin
outtextxy(360,140,' In this window you have to:');
outtextxy(360,155,'firstly, put in lower value ');
outtextxy(360,170,'of integral and press ENTER,');
outtextxy(360,185,'then put in higher value');
outtextxy(360,200,'of integral and press ENTER');
end;
setcolor(2);
setfillstyle(1,5);
bar(10,210,335,320);
rectangle(15,215,330,315);
rectangle(17,217,328,313);
settextstyle(0,0,0);
if (ea mod 2)=0 then
begin
outtextxy(20,230,' Введите нижнее значение');
outtextxy(20,244,' интеграл :');
outtextxy(20,262,' Введите верхнее значение');
outtextxy(20,272,'интеграл :');
end
else
begin
outtextxy(20,230,' Put in lower value of');
outtextxy(20,244,' integral:');
outtextxy(20,262,' Put in higher value of');
outtextxy(20,272,'integral:');
end;
end;
procedure wwodab(ea:word;var a,b:real);
{Процедура ввода приделов интегрирования}
var
f:string;
k:string;
ec:integer;
begin
newsc(ea);
winwwodab(ea);
readln;
repeat
winwwodab(ea);
gotoxy(16,16);
read(k);
val(k,a,ec);
if ec<>0 then
error1(ea);
until ec=0;
readln;
repeat
winwwodab(ea);
str(a:4:2,f);
outtextxy(120,244,f);
gotoxy(16,18);
read(k);
val(k,b,ec);
if ec<>0 then
error1(ea);
until ec=0;
end;
procedure helpwin(ea:word);
{основа окна помощи}
begin
setfillstyle(1,3);
bar(350,100,590,380);
setcolor(0);
rectangle(353,103,587,377);
rectangle(355,105,585,375);
setcolor(14);
if (ea mod 2)=0 then
outtextxy(360,115,' ОКНО ПОМОЩИ')
else
outtextxy(360,115,' HELP WINDOW');
end;
procedure error1(ea:word);
begin
setcolor(15);
setfillstyle(1,12);
bar(140,210,490,280);
rectangle(145,215,485,275);
rectangle(147,217,483,273);
if (ea mod 2)=0 then
begin
outtextxy(150,227,' Ошибка! ');
outtextxy(150,237,' Вводимые параметр не число!! ');
outtextxy(150,250,' Проверьте значение и заново введите его.');
end
else
begin
outtextxy(150,227,' Error! ');
outtextxy(150,237,' The value you entered isn`t a quantity!!');
outtextxy(150,250,' Check it and put it in again. ');
end;
sound(600);
delay(4000);
nosound;
readln;
readln;
end;
procedure error(ea:word);
{Процедура ошибки}
begin
setcolor(15);
setfillstyle(1,12);
bar(140,210,490,260);
rectangle(145,215,485,255);
rectangle(147,217,483,253);
if (ea mod 2)=0 then
begin
outtextxy(150,227,' Ошибка!');
outtextxy(150,237,' Недостаток вводимых параметров!!');
end
else
begin
outtextxy(150,227,' Error!');
outtextxy(150,237,' Not all parameters are set!');
end;
sound(600);
delay(4000);
nosound;
readln;
end;
procedure newsctext(ea:word);
{Текст для процедуры newsc}
begin
if ea mod 2 =0 then
begin
settextstyle(0,0,1);
setcolor(15);
outtextxy(400,440,'Язык - Русский. ');
outtextxy(400,450,'Версия 1.0 Последнее издание');
outtextxy(400,460,'й Все права защищены.');
end
else
begin
settextstyle(0,0,1);
setcolor(15);
outtextxy(400,440,'Language - English.');
outtextxy(400,450,'Version 1.0 Final release.');
outtextxy(400,460,'й All rights reserved.');
end;
end;
procedure newsc(ea:word);
{Процедура обновления экрана}
begin
cleardevice;
setfillstyle(10,8);
floodfill(1,1,15);
setcolor(0);
setfillstyle(1,7);
bar(80,10,580,80);
rectangle(82,12,578,78);
rectangle(85,15,575,75);
settextstyle(0,0,2);
setcolor(10);
if ea mod 2 =0 then
begin
settextstyle(0,0,2);
outtextxy(90,20,' Вычисление интеграл ');
outtextxy(90,50,' методом Ньютона-Котеса.');
newsctext(ea);
end
else
begin
settextstyle(3,0,2);
outtextxy(90,20,' Calculeting of integral');
outtextxy(90,47,' using the Newton-Cotes method.');
newsctext(ea);
end;
settextstyle(0,0,1);
end;
procedure winwin1;
{Окно процедуры win1}
begin
setfillstyle(1,7);
bar(160,110,460,380);
setcolor(0);
rectangle(162,113,457,377);
rectangle(165,115,455,375);
end;
procedure win1(ea:word);
{Вводное окно}
begin
settextstyle(0,0,1);
setcolor(10);
if (ea mod 2)=0 then
begin
outtextxy(168,135,'Министерство Высшего образования РФ);
outtextxy(168,150,'Московский Государственный Институт');
outtextxy(168,160,' Электронной Техники ');
outtextxy(168,170,' (Технический лниверситет) ');
outtextxy(168,180,' Лицей №1557 ');
outtextxy(168,210,' КУРСОВАЯ РАБО'А ');
outtextxy(168,230,' «Вычисление интеграла ');
outtextxy(168,245,' метедом Ньютона-Котеса» ');
outtextxy(158,270,' Написал: Коноплев А.А. ');
outtextxy(158,285,' Руководитель: доцент Колдаев В.Д.');
end
else
begin
outtextxy(168,135,' Department of High Education ');
outtextxy(168,150,' Moscow State Institute of ');
outtextxy(168,160,' Electronic Technics ');
outtextxy(168,170,' (Technics University) ');
outtextxy(168,180,' Lyceum №1557 ');
outtextxy(168,210,' COURSE WORK ');
outtextxy(168,230,' «Calculation of integral ');
outtextxy(168,245,' by Newton-Cotes method» ');
outtextxy(158,270,' Author: Konoplev A.A. ');
outtextxy(158,285,' Supervisor:senior lecturer ');
outtextxy(158,300,' Koldaev V.D. ');
end;
end;
procedure win2(ea:word;var k:word);
{Окно выбора способа подсчета }
var
c:char;
x:integer;
f:string;
begin
setcolor(2);
setfillstyle(1,5);
bar(70,200,340,330);
rectangle(75,205,335,325);
rectangle(77,207,333,323);
settextstyle(0,0,0);
setfillstyle(1,15);
bar(80,250,330,270);
setfillstyle(1,5);
bar(80,285,330,305);
if ea mod 2 =0 then
begin
outtextxy(77,220,'Выбирете способ задания значений');
outtextxy(75,230,' функции. ');
outtextxy(70,255,' По таблице(в ручную)');
outtextxy(70,295,' По расчетам(автом т.)');
end
else
begin
outtextxy(77,220,' Choose a method of putting in');
outtextxy(75,230,' the values of function. ');
outtextxy(70,255,' By the table(by hand)');
outtextxy(70,295,' By calculations(automat.)');
end;
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;
x:=0;
repeat
if keypressed then
begin
c:=readkey;
if (c=#80) or (c=#72) then
x:=x+1;
setfillstyle(1,15);
if (x mod 2)=0 then
begin
bar(80,250,330,270);
setfillstyle(1,5);