Вычисление интеграла методом Ньютона-Котеса (теория и программа на Паскале)
Рефераты >> Кибернетика >> Вычисление интеграла методом Ньютона-Котеса (теория и программа на Паскале)

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);


Страница: