Модуль Graph 20. Вывести в координатных осях график, заданный функцией. - Turbo Pascal
Формулировка задачи:
Следующий график y(t)=1/(5-3cos(t))
График должен выглядеть примерно таким образом:
Заранее спасибо.
Решение задачи: «Модуль Graph 20. Вывести в координатных осях график, заданный функцией.»
textual
Листинг программы
uses graph; function F(t:real):real; begin F:=1/(5-3*cos(t)); end; var xn,xk,max,min,x,y,mx,my,dx:real; x0,y0,x1,y1,x2,y2,i,px,py:integer; s:string; begin x0:=0; initgraph(x0,y0,''); x0:=getmaxX div 2;{центр} y0:=getmaxY div 2;{центр} setfillstyle(1,15); bar(x0-200,y0-200,x0+200,y0+200); x1:=x0-100;y1:=y0-180; x2:=x0+180;y2:=y0+100; setcolor(0); rectangle(x1,y1,x2,y2); xn:=0;xk:=2*pi;{интервал по Х} mx:=(x2-x1)/(xk-xn);{масштаб по Х} {найдем максимум и минимум для масштаба по У} max:=F(xn); x:=xn; while x<=xk do begin x:=x+0.01; if F(x)>max then max:=F(x) end; my:=(y2-y1)/(2*max);{по У} for i:=1 to round(xk-xn)+1 do{максимальное количество засечек в одну сторону} begin line(x1,y2-round(i*my/5),x1+5,y2-round(i*my/5));{засечки на оси У} line(x2-5,y2-round(i*my/5),x2,y2-round(i*my/5)); line(x1+round(i*mx),y2,x1+round(i*mx),y2-5); {засечки на оси Х} line(x1+round(i*mx),y1,x1+round(i*mx),y1+5); str(i/5:0:1,s); {подпись оси У} outtextXY(x1-25,y2-round(i*my/5),s);{соответственно засечкам} {подпись оси Х} str(i,s); outtextXY(x1+round(i*mx),y2+10,s); end; {центр} outtextXY(x1+5,y2+10,'0'); {график} x:=xn; dx:=0.001; while x<=xk do begin x:=x+dx; {наращиваем х} px:=x1+round(x*mx); {изменение по оси Х} y:=F(x); {график в реальных координатах} py:=y2-round(y*my);{в экранных} putpixel(px,py,12); end; outtextXY(x1-90,y1,'1'); outtextXY(x1-90,(y1+y2)div 2,'Y(t)'); outtextXY(x1-90,y2,'0'); outtextXY((x1+x2)div 2,y2+60,'t'); outtextXY(x1,y2+60,'0'); outtextXY(x2-20,y2+60,'2pi'); setcolor(12); line(x1-90,(y1+y2)div 2+10,x1-60,(y1+y2)div 2+10); readln end.
Объяснение кода листинга программы
- Объявлены переменные: xn, xk, max, min, x, y, mx, my, dx (с 1 по 9), s (с 10 по 12), x0, y0, x1, y1, x2, y2, i, px, py (с 13 по 20).
- Задаются начальные значения для переменных: x0=0, y0=0, x1=x0-100, y1=y0-180, x2=x0+180, y2=y0+100, xn=0, xk=2pi, max=F(xn), min=F(xk), my=(y2-y1)/(2max), mx=(x2-x1)/(xk-xn).
- Строятся засечки на оси У и оси Х с помощью функций line и outtextXY.
- Строятся подписи оси У и оси Х с помощью функций outtextXY.
- Строится график функции Y(t) = 1/(5-3*cos(t)) с помощью цикла while и функции putpixel.
- Строятся подписи для графика с помощью функций outtextXY.
- Строится ось t с помощью функций line и outtextXY.
- Задается цвет для линий и символов графита (12) с помощью функции setcolor.
- В цикле while считывается значение от пользователя с помощью функции readln.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д