Страница 1 из 1

Рисование графиков функций в Паскале

Добавлено: 05 апр 2009, 19:24
maliyusha
:) Привет!
y = sin(x); x = [0,1; 1];
Как разбить на отрезки ось Х, чтобы получилось,как на оси У, и можно ли вместо 0,0 поставить просто 0 и при этом оставить все как есть? Пожалуйста,помогите* :confused: особенно с Х!!!

Код: Выделить всё

Uses crt, graph;
Var dr,m: integer;
    xe,ye,xen,yen,xex,yex,xs,ys,kdx,kdy,kt,xl,yl,i: integer;
    x,y,xmin,ymin,xmax,ymax,mx,my,hx,hdx,hdy: real;
    xst, yst: string[5];
begin
    dr := detect;
    initgraph (dr,m,'c:\bp\bgi');
{Granicy okna v dekardovoi sisteme koordinat}
    xmin:=0.1;
    xmax:=1;
    ymin:=-0.9;
    ymax:=1.3;
{Granicy ekrannogo okna}
    xen:=60;
    xex:=620;
    yen:=450;
    yex:=30;
{Shagi razmetki storon okna i koli4estvo delenii}
    hdx:=pi/2;
    hdy:=0.1;
    kdx := round ((xmax-xmin)/hdx);
    kdy := round ((ymax-ymin)/hdy);

{masshtabnye koefficienty dlya X i Y}
    mx:=(xmax-xmin)/(xex-xen);
    my:=(ymax-ymin)/(yen-yex);
{Koordinaty osei}
    xs := round (xen+(0.1-xmin)/mx);
    ys := round (yen-(0-ymin)/my);
    setcolor (19);
    line (xen,ys,xex,ys);
    line (xs,yen,xs,yex);
    outtextxy(trunc(xs+100),trunc(ys-239),'F(X)=SIN(X), 0.1<X<1');
    outtextxy(trunc(xs+6), trunc(ys-239), 'Y');
    outtextxy(trunc(xs+550), trunc(ys-14), 'X');
{Razmetka storony okna po osi X}
    x:=xmin;
    for i:=1 to kdx do
     begin
      xe := round (xen+(x-xmin)/mx);
      str (x:6:1,xst);
      line (xe,yen,xe,yen);
      outtextxy (xe-4,yen,xst);
      x:=x+hdx;
     end;
{Razmetka storony okna po osi Y}
    y:=ymin;
    for i:=1 to kdy do
     begin
      ye := round (yen-(y-ymin)/my);
      str (y:6:1,yst);
      line (xen,ye,xen-5,ye);
      outtextxy (xen-50,ye-4,yst);
      y:=y+hdy;
     end;
 {Vyvod grafika funkcii}
    x:=xmin;
    hx:=mx;
    kt:=xex-xen+1;
    for i:=1 to kt do
     begin
      y := sin(x);
      xe := round (xen+(x-xmin)/mx);
      ye := round (yen-(y-ymin)/my);
      putpixel (xe,ye,30);
      x:=x+hx;
     end;
    readln;
 closegraph;
end.

Re: Рисование графиков функций в Паскале

Добавлено: 06 апр 2009, 04:44
asdqwe
Откуда взялись звездочки? В следующий раз постарайся без них!

Re: Рисование графиков функций в Паскале

Добавлено: 06 апр 2009, 14:31
maliyusha
Я не знаю откуда взялись, такое впервые.
--------------------------------------------------------------------------------
Добавленное сообщение
--------------------------------------------------------------------------------
Придется убирать вручную :(

Re: Рисование графиков функций в Паскале

Добавлено: 06 апр 2009, 18:26
dr.Jekill
[syntax=pascal]
Uses crt, graph;
Var dr,m: integer;
xe,ye,xen,yen,xex,yex,xs,ys,kdx,kdy,kt,xl,yl,i,k,x2: integer;
x,y,xmin,ymin,xmax,ymax,mx,my,hx,hdx,hdy,xK: real;
xst, yst: string[5];
begin
dr := detect;
initgraph (dr,m,'c:\bp\bgi');
{Granicy okna v dekardovoi sisteme koordinat}
xmin:=0.1;
xmax:=1;
ymin:=-0.9;
ymax:=1.3;
{Granicy ekrannogo okna}
xen:=60;
xex:=620;
yen:=450;
yex:=30;
{Shagi razmetki storon okna i koli4estvo delenii}
hdx:=pi/2;
hdy:=0.1;
kdx := round ((xmax-xmin)/hdx);
kdy := round ((ymax-ymin)/hdy);

{masshtabnye koefficienty dlya X i Y}
mx:=(xmax-xmin)/(xex-xen);
my:=(ymax-ymin)/(yen-yex);
{Koordinaty osei}
xs := round (xen+(0.1-xmin)/mx);
ys := round (yen-(0-ymin)/my);
setcolor (19);
line (xen,ys,xex,ys);
line (xs,yen,xs,yex);
outtextxy(trunc(xs+100),trunc(ys-239),'F(X)=SIN(X), 0.1<X<1');
outtextxy(trunc(xs+6), trunc(ys-239), 'Y');
outtextxy(trunc(xs+550), trunc(ys-14), 'X');
{Razmetka storony okna po osi X}
x:=xmin;
for i:=1 to kdx do
begin
xe := round (xen+(x-xmin)/mx);
str (x:6:1,xst);
line (xe,yen,xe,yen);
outtextxy (xe-4,yen,xst);
x:=x+hdx;
end;
{Razmetka storony okna po osi Y}
y:=ymin;
for i:=1 to kdy do
begin
ye := round (yen-(y-ymin)/my);
if (y<0.1) and (y>=-0.09) then
yst:=' O' else
str (y:6:1,yst);
line (xen,ye,xen-5,ye);
outtextxy (xen-50,ye-4,yst);
y:=y+hdy;
end;
xK:=0.2; x2:=60;
while (xK>0) and (xK<=1) do
begin
line(x2,278,x2,284);
str(xk:3:1,xst);
outtextxy (x2+59,290,xst);
xK:=xK+0.1;
x2:=x2+70;
end;
{Vyvod grafika funkcii}
x:=xmin;
hx:=mx;
kt:=xex-xen+1;
for i:=1 to kt do
begin
y := sin(x);
xe := round (xen+(x-xmin)/mx);
ye := round (yen-(y-ymin)/my);
putpixel (xe,ye,30);
x:=x+hx;
end;
readln;
closegraph;
end.
[/syntax]

Re: Рисование графиков функций в Паскале

Добавлено: 06 апр 2009, 18:38
maliyusha
Спасибо :) Очень красиво, не график, а шедевр. Спасибо :)