skinner007
Новые
- Регистрация
- 17 Ноя 2011
- Сообщения
- 12
- Реакции
- 0
- Баллы
- 0
Не пойму что не так
Проблемка такого плана, есть программа вот она
uses graph;
function F1(x:real):real;
begin
F1:=exp(x+1);
end;
function F2(x:real):real;
begin
F2:=exp(1-x);
end;
function F3(x:real):real;
begin
F3:=(sqr(x)/2)+6;
end;
var xn,xk,max,min,x,y,m,dx,h:real;
x0,y0,i,px,py,n:integer;
s:string;
begin
x0:=0;
initgraph(x0,y0,'');
x0:=getmaxX div 2;
y0:=getmaxY div 2;
xn:=-1.3;xk:=1.3;
m:=(y0-450)/F2(1);
setbkcolor(15);
setcolor(8);
line(0,y0,getmaxX,y0);
line(x0,0,X0,getmaxY);
for i:=1 to 4 do
begin
line(x0-3,y0+round(i*m),x0+3,y0+round(i*m));
line(x0-3,y0-round(i*m),x0+3,y0-round(i*m));
line(x0+round(i*m),y0-3,x0+round(i*m),Y0+3);
line(x0-round(i*m),y0-3,x0-round(i*m),Y0+3);
str(i,s);
outtextXY(x0-35,y0+round(i*m),'-'+s);
outtextXY(x0-35,y0-round(i*m),s);
outtextXY(x0+round(i*m),y0+10,s);
outtextXY(x0-round(i*m),y0+10,'-'+s);
end;
outtextXY(x0,y0,'0');
outtextXY(getmaxX-10,y0-10,'X');
outtextXY(x0-10,10, 'Y');
setcolor(8);
x:=xn;
dx:=0.001;
while x<=xk do
begin
x:=x+dx;
px:=x0+round(x*m);
y:=F1(x);
py:=y0-round(y*m);
putpixel(px,py,12);
if (x>-0.7)and(x<1) then
begin
y:=F2(x);
py:=y0-round(y*m);
putpixel(px,py,9);
end;
if x<-0.3 then
begin
y:=F3(x);
py:=y0-round(y*m);
putpixel(px,py,2);
end;
end;
h:=45/sin(pi/4)/m;
n:=round((xk-xn)/h);
for i:=n+1 downto -1 do
begin
x:=xn;
while x<=xk do
begin
x:=x+dx;
px:=x0+round(x*m);
y:=x+h*(n-i+1);
py:=y0-round(y*m);
if(y>F3(x))and(y>F2(x))and(y<F1(x))
then putpixel(px,py,13);
end;
end;
setcolor(12);
outtextXY(30,20,'Y1=exp(x+1)');
setcolor(9);
outtextXY(30,40,'Y2=exp(1-x)');
setcolor(2);
outtextXY(30,60,'Y3=(sqr(x)/2)+6');
readln
end.
она должна нарисовать 3 графика функции и заштриховать пространство между этими графиками, но графики получаются слишком короткими и не создают внутреннего пространства, я запускал эту программу при помощи free pascal помогите разобраться в чем проблема в программе или в самом паскале?
Проблемка такого плана, есть программа вот она
uses graph;
function F1(x:real):real;
begin
F1:=exp(x+1);
end;
function F2(x:real):real;
begin
F2:=exp(1-x);
end;
function F3(x:real):real;
begin
F3:=(sqr(x)/2)+6;
end;
var xn,xk,max,min,x,y,m,dx,h:real;
x0,y0,i,px,py,n:integer;
s:string;
begin
x0:=0;
initgraph(x0,y0,'');
x0:=getmaxX div 2;
y0:=getmaxY div 2;
xn:=-1.3;xk:=1.3;
m:=(y0-450)/F2(1);
setbkcolor(15);
setcolor(8);
line(0,y0,getmaxX,y0);
line(x0,0,X0,getmaxY);
for i:=1 to 4 do
begin
line(x0-3,y0+round(i*m),x0+3,y0+round(i*m));
line(x0-3,y0-round(i*m),x0+3,y0-round(i*m));
line(x0+round(i*m),y0-3,x0+round(i*m),Y0+3);
line(x0-round(i*m),y0-3,x0-round(i*m),Y0+3);
str(i,s);
outtextXY(x0-35,y0+round(i*m),'-'+s);
outtextXY(x0-35,y0-round(i*m),s);
outtextXY(x0+round(i*m),y0+10,s);
outtextXY(x0-round(i*m),y0+10,'-'+s);
end;
outtextXY(x0,y0,'0');
outtextXY(getmaxX-10,y0-10,'X');
outtextXY(x0-10,10, 'Y');
setcolor(8);
x:=xn;
dx:=0.001;
while x<=xk do
begin
x:=x+dx;
px:=x0+round(x*m);
y:=F1(x);
py:=y0-round(y*m);
putpixel(px,py,12);
if (x>-0.7)and(x<1) then
begin
y:=F2(x);
py:=y0-round(y*m);
putpixel(px,py,9);
end;
if x<-0.3 then
begin
y:=F3(x);
py:=y0-round(y*m);
putpixel(px,py,2);
end;
end;
h:=45/sin(pi/4)/m;
n:=round((xk-xn)/h);
for i:=n+1 downto -1 do
begin
x:=xn;
while x<=xk do
begin
x:=x+dx;
px:=x0+round(x*m);
y:=x+h*(n-i+1);
py:=y0-round(y*m);
if(y>F3(x))and(y>F2(x))and(y<F1(x))
then putpixel(px,py,13);
end;
end;
setcolor(12);
outtextXY(30,20,'Y1=exp(x+1)');
setcolor(9);
outtextXY(30,40,'Y2=exp(1-x)');
setcolor(2);
outtextXY(30,60,'Y3=(sqr(x)/2)+6');
readln
end.
она должна нарисовать 3 графика функции и заштриховать пространство между этими графиками, но графики получаются слишком короткими и не создают внутреннего пространства, я запускал эту программу при помощи free pascal помогите разобраться в чем проблема в программе или в самом паскале?
