program kyrsovaya; {$APPTYPE CONSOLE} uses crt, graph; label label1; procedure logarifm; function f(x:real):real; begin f:=ln(x)/ln(10); end; {2} function RealToStr(x:real):string; var st:string; ch:string; begin str(x:6:3, st); RealToStr:=st; end; {3 - Maswtab} const ScaleX=20; ScaleY=60; {4} var TableWidth, CenterX, CenterY:integer; gDriver, gMode, errCode: integer; color, n:integer; X,Y:real; begin gDriver:=Detect; InitGraph(gDriver, gMode, ' '); {polu4aem rez-tat, t.e. bila li owibka} errCode:=graphresult; if errCode<>grOk then begin {esli ne grOk, to bila owibka} writeln('ERROR: ' + grapherrormsg(errCode)); readln; halt(100); end; {wirina tablici} TableWidth:=getmaxx div 6; CenterX:=TableWidth+10; CenterY:=getmaxy div 2; {risuem koordinatnie osi (zelenie)} setcolor(lightgreen); line(CenterX, CenterY, getmaxx - 10, CenterY); line(CenterX, 10, CenterX, getmaxx - 10); {na4anljnoe zna4enie x} X:=0.01; n:=0; {kol-vo to4ek, kotorie uzhe bili dobavleni k grafiku} {Wrift. Belij} setcolor(white); settextstyle(smallfont, horizdir, 2); settextjustify(centertext, centertext); {zagolovok tablici} outtextxy(TableWidth div 2, textheight('W')+3, 'y=lnx'); {___________________________} while X<20 do begin Y:=f(X); {vi4isljaem zna4enie funkcii} if n mod 10 = 0 then begin color:=lightred; outtextxy(TableWidth div 2, ((n div 10)+2)*(textheight('W')+3), RealToStr(X)+' '+RealToStr(Y)); end else color:=white; {esli to4na ne 10 - to prosto belaja} putpixel(CenterX+trunc(x*ScaleX), CenterY-trunc(Y*ScaleY), color); X:=X+0.01; inc(n) end; readln; closegraph; end; Procedure sinus; {var joy:char; procedure j; begin joy:=readkey; end; } function f(t:real): real; begin t := t * pi / 180; f:=sin(t); end; var dr, m: integer; xe,ye,xen,xek,yen, yek, i,a,b,c,d: integer; xs,ys,kdx,kdy,kt: integer; x,y,xn,yn,xk,yk,mx,my,hx,hdx, hdy: real; xst, yst: string [5]; t : real; begin writeln('postroenie grafika funkcii y=sin(x*d)+a'); writeln; writeln('vvedite koefficient smescheniya (a):'); readln(a); writeln('vvedite min y - otritsatelnoe chislo'); readln(b); writeln('vvedite max y'); readln(c); writeln('vvedite koeffitsient szhatiya grafica (d)'); repeat readln(d); if d=0 then write ('d ne mozhet byt raven 0,povtorite vvod, d= '); until d<>0; dr := detect; initgraph (dr,m,''); {granitsy grafica } xn:=-360; xk:=360; yn:=b; yk:=c; {granitsy okna} xen:=100; xek:=1250; yen:=600; yek:=100; {shagi razmetki i kolichestvo delenij} hdx:=30; hdy:=0.5; kdx := round ((xk-xn)/hdx+1); kdy := round ((yk-yn)/hdy+1); rectangle (xen,yek,xek,yen); {mashtabnye koeffitsuenty dlya x i y} mx:=(xk-xn)/(xek-xen); my:=(yk-yn)/(yen-yek); {koordinaty osej} xs := round (xen+(0-xn)/mx); ys := round (yen-(0-yn)/my); setcolor (14); line (xen,ys,xek,ys); line (xs,yen,xs,yek); {razmetka po osi x} x:=xn; for i:=1 to kdx do begin xe := round (xen+(x-xn)/mx); str (x:5:1,xst); line (xe,yen,xe,yen+5); outtextxy (xe-20,yen+10,xst); x:=x+hdx; end; {razmetka po osi y} y:=yn; for i:=1 to kdy do begin ye := round (yen-(y-yn)/my); str (y:5:1,yst); line (xen,ye,xen-5,ye); outtextxy (xen-50,ye-4,yst); y:=y+hdy; end; {sobstvenno sam grafik} x:=xn + 0.1; hx:=0.1; repeat begin y := f(x*d)+a; xe := round (xen+(x-xn)/mx); ye := round (yen-(y-yn)/my); putpixel (xe,ye,11); x:=x+hx; end; until x>=xk; readln; closegraph; end; Procedure Parabola; function f(x:real):real; begin f:=(X*X){+a}; end; {2} function RealToStr(x:real):string; var st:string; begin str(x:0:0, st); RealToStr:=st; end; {3 - Maswtab} const ScaleX=15; ScaleY=15; {4} var TableWidth, CenterX, CenterY,a:integer; x0,y0,xm,ym,gDriver, gMode, errCode: integer; color, n:integer; X,Y:real; begin writeln('vvedite koeffitsient smescheniya po osi y '); readln(a); gDriver:=Detect; InitGraph(gDriver, gMode, ' '); {polu4aem rez-tat, t.e. bila li owibka} errCode:=graphresult; if errCode<>grOk then begin {esli ne grOk, to bila owibka} writeln('ERROR: ' + grapherrormsg(errCode)); readln; end; {wirina tablici} TableWidth:=getmaxx div 2; {1/2 wirini ekrana} CenterX:=TableWidth; CenterY:=getmaxy div 2; {risuem koordinatnie osi (zelenie)} setcolor(lightgreen); line(10, CenterY, getmaxx, CenterY); line(CenterX, 10, CenterX, getmaxy ); {na4anljnoe zna4enie x} X:=-15; n:=0; {kol-vo to4ek, kotorie uzhe bili dobavleni k grafiku} {Wrift. Belij} setcolor(white); settextstyle(smallfont, horizdir, 2); settextjustify(centertext, centertext); {zagolovok tablici} outtextxy(TableWidth div 2, textheight('W')+3, 'y=x*x+a'); {___________________________} while X<20 do begin Y:=f(X)+a; {vi4isljaem zna4enie funkcii} if n mod 10 = 0 then begin color:=lightred; end else color:=white; {esli to4ka ne 10 - to prosto belaja} putpixel(CenterX+trunc(x*ScaleX), CenterY-trunc(Y*scaleY),color); X:=X+0.001; inc(n) end; readln; closegraph; end; var id:integer; s:string; otvet:boolean; label a; begin writeln('курсовая работа по информатике'); writeln('на тему "построение графиков функций"'); writeln('выполнили Шабалина Т.А и Девочкина С.С'); writeln; writeln; writeln; writeln('данная программа предназначена для построения графиков'); writeln('функций вида y=sinx,y=lnx,y=a*x*x+b*x+c'); writeln; writeln; writeln; otvet:=true; while otvet do begin writeln('vvedite tsifru sootvetstvuyuschuyu grafikyа'); a:writeln('1 - logarifm '); writeln('2 - sinus '); writeln('3 - parabola '); readln(id); case id of 1:logarifm; 2:sinus; 3:parabola; else begin writeln('vy vveli nepravilnyu komandy,vvedite sootvetstvyuschyu grafikam tsifry'); goto a; end; end; writeln('xotite li postroit esche grafic? yes/no'); readln(s); if s='yes' then otvet:=true else otvet:=false; end; end.