Скачиваний:
329
Добавлен:
04.03.2014
Размер:
3 Кб
Скачать
program FGrafik;
  uses GRAPH;
  const k=101; xn=65; xk=625;
         yn=20;yk=400;
         y1n=20;y1k=400;
         y2n=20;y2k=400;
         ndx=10;ndy=10;
         n=5;m=2;
  var i,j,driver,mode,lx,ly,mx,my,m1y,m2y:integer;
      kx,ky,k1y,k2y:array [1..k] of integer;
      x,y,y1,y2:array [1..k] of real;
      dx,dy,dy1,dy2,rx,ry,r1y,r2y,ymin,y1min,y2min,ymax,y1max,y2max,xmin,xmax:real;
      st:string;
  Function F(x:real):real;
           begin
           F:=sin(x)+cos(2*x);
                         end;
  Function G(x:real): real;
            begin
           G:=x+exp(-2*x)   end;
  Function t(x:real):real;
            begin
            t:=ln(x); end;
    Begin
    writeln('Input xmin,xmax?');readln(xmin,xmax);
    dx:=(xmax-xmin)/(k-1);
    driver:=detect;
    INITGRAPH(driver,mode,'E:\tp5');
    ymin:=1e10;ymax:=-1e10;
    y1min:=1e10;y1max:=-1e10;
    y2min:=1e10;y2max:=-1e10;
    for i:=1 to k do begin
        x[i]:=xmin+(i-1)*dx;
        y[i]:=f(x[i]);
        y1[i]:=g(x[i]);
        y2[i]:=t(x[i]);
     if y[i]<ymin then ymin:=y[i];
     if y1[i]<y1min then y1min:=y1[i];
     if y2[i]<y2min then y2min:=y2[i];
          if y[i]>ymax then ymax:=y[i];
          if y1[i]>y1max then y1max:=y1[i];
          if y2[i]>y2max then y2max:=y2[i];
          end;
  rx:=x[k]-x[1];
  ry:=ymax-ymin;
  r1y:=y1max-y1min;
  r2y:=y2max-y2min;
       mx:=xk-xn;
       my:=yk-yn;
       m1y:=y1k-y1n;
       m2y:=y2k-y2n;
   for i:=1 to k do begin
      kx[i]:=round((x[i]-x[1])*(mx/rx)+xn);
      ky[i]:=round((ymax-y[i])*(my/ry)+yn);
      k1y[i]:=round((y1max-y1[i])*(m1y/r1y)+y1n);
      k2y[i]:=round((y2max-y2[i])*(m2y/r2y)+y2n);
                      end;
                      setcolor(12);
                    setlinestyle(0,4,3);
  for i:=1 to k-1 do line(kx[i],ky[i],kx[i+1],ky[i+1]);
        setcolor(14);
  for i:=1 to k-1 do line(kx[i],k1y[i],kx[i+1],k1y[i+1]);
        setcolor(9);
  for i:=1 to k-1 do line(kx[i],k2y[i],kx[i+1],k2y[i+1]);
  setcolor(3);
  setlinestyle(2,4,1);
     rectangle(xn,yn,xk,yk);
     lx:=(xk-xn)div ndx;
     dx:=(x[k]-x[1])/ndx;
              for i:=1 to ndx+1 do begin
            line(xn+lx*(i-1),yn,xn+lx*(i-1),yk);
            str((xmin+(i-1)*dx):n:m,st);
            outtextxy(xn+lx*(i-1)-(n-m)*8+4,yk+14,st);end;
       ly:=(yk-yn) div ndy;
       dy:=(ymax-ymin)/ndy;
   for i:=1 to ndy+1 do begin
       line(xn,yn+(i-1)*ly,xk,yn+(i-1)*ly);
       str((ymax-(i-1)*dy):n:m,st);
     outtextxy((xn-(n*8)),yn+(i-1)*ly-4,st); end;
        settextstyle(0,0,1);
        setcolor(12);
     outtextxy(20,430,'f=sin(x)+cos(2x)');
        setcolor(14);
     outtextxy(300,430,'g=x+exp(-2x)');
        setcolor(9);
     outtextxy(550,430,'t=ln(x)');
      readln;closegraph;end.
Соседние файлы в папке Alex