Помощь - Поиск - Пользователи - Календарь
Полная версия: Интеграл + граффик
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
klem4
Задание, посчитать интеграл, а потом построить график, по отдельности пашет, а вместе нет, у меня даже предположений нет почему, для графиков использовал шаблон Олег_З'а.

Исходный код
uses crt,graph;
const

{ OPTIONS }

shag=0.0001;

lgr = 3;

pgr = 10;

zcrtX=320;

zcrty=240;

mtrX=10;

mtrY=10;

colorG=15;

colorOXY=4;

OXYminX=-200;

OXYmaxX=200;

OXYminY=-200;

oxymaxY=200;

Var grDriver : Integer;

grMode : Integer;


x,y,dx,x1,x2,e,i : extended;


L : integer;

f : Text;


function Fx(x:real):real;

begin

Fx:=(exp(3*ln(x))+2*x+3)/(x+sqrt(x)); {Zdes' podintegralnoe virajenie.}

end;



procedure CountViaBar;

var

xx1,xx2:real;

c:longint;

begin

writeln('------------------------------------------------');

writeln('-->Metod srednih pramougolnikov.');

writeln('Vsego iteracii : ',round(abs(x2-x1)/e));

i:=0;

for c:=1 to round(abs(x2-x1)/e) do begin

write('iteraciaя ',c,chr(13));

xx1:=Fx(x1+c*e);

xx2:=Fx(x1+c*e+e);

i:=i+abs(xx1+xx2)/2*e;

end;

writeln('------------------------------------------------');

writeln('Integral=',i:3:6);

end;



procedure CountViaTrap;

var

xx1,xx2,xx3:real;

c:longint;

begin

writeln('------------------------------------------------');

writeln('-->Metod trapecii.');

writeln('Vsego iteracii:',round(abs(x2-x1)/e));

i:=0;

for c:=1 to round(abs(x2-x1)/e) do begin

write('Iteraciaя ',c,chr(13));

xx1:=Fx(x1+c*e);

xx2:=Fx(x1+c*e+e);

if xx2>xx1 then xx3:=xx1 else xx3:=xx2;

i:=i+abs(xx2-xx1)*e+abs(xx3)*e;

end;

writeln('------------------------------------------------');

writeln('Integral=',i:3:5);

end;
begin

clrscr;
writeln('------------------------------------------------');

writeln('-=Programma vi4islenia opredelennogo integrala=-');

writeln('Vvedite ishodnie zna4eniyaя:');

write('Na4alnoe zna4enie x (x1)=');Readln(x1);

write('Konexnoe zna4enie x (x2)=');Readln(x2);

write('To4nost vi4isleniyaя (e)=');Readln(e);

CountViaBar;

CountViaTrap;

writeln('------------------------------------------------');

writeln('Najmite lubuy klavishu ...');

repeat until keypressed;


grDriver:=Detect;

InitGraph(grDriver, grMode, '');

for L:=OXYminX to OXYmaxX do putpixel(zcrtX+L,zcrty,colorOXY);

for L:=OXYminY to OXYmaxY do putpixel(zcrtX,zcrty-L,colorOXY);

x:=lgr;

assign(f,'OutFile');

{*} rewrite(f);


while x<=pgr do

begin

y:=(x*x*x+2*x+3)/(x+sqrt(x));

putpixel(zcrtx+trunc(x*mtrX),zcrty-trunc(y*mtrY),colorg);

x:=x+shag;

writeln(f,'x=',x:1:2,' y=',y:1:2);

end;

close(f);

readkey;

closegraph;

END.


заранее спасибо.
volvo
Цитата(klem4 @ 29.04.05 7:23)
Задание, посчитать интеграл, а потом построить график, по отдельности пашет, а вместе нет, у меня даже предположений нет почему

В чем именно заключается неправильная работа программы? Хммм... Попробую догадаться: ты не видишь график, правда?

Причина:
writeln('Najmite lubuy klavishu ...');
repeat until keypressed;
...
{ отрисовка }
...
readkey; { вот то, что ты ввел в repeat until прочитано... }



... и естественно, ждать следующей клавиши никто не собирается... smile.gif

Есть 2 выхода:
1.
writeln('Najmite lubuy klavishu ...');
repeat until keypressed;
while keypressed do readkey; { очищаешь буфер клавиатуры }
...


2.
writeln('Najmite klavishu <ENTER>...');
readln;
klem4
Спасибо.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.