Графическое решение системы нелинейных алгебраических уравнений - Pascal
Формулировка задачи:
Вот исходники (вместе со всеми модулями):
8.rarА вот так должна в идеале выглядеть эта программа:
res.rar Модули Consts, Types, Draw1 и Mathem1 врятли нужно менять Недочёты в Draw2, Mathem2 или самой программе, из за этого график и вылазиет за границы. Почти ко всем дествиям программы есть комментарии. Заранее благодарю!Решение задачи: «Графическое решение системы нелинейных алгебраических уравнений»
{*********** Процедуры и функции для работы с графикой *************} unit Draw2; interface uses consts,types,graph,crt,sysutils; { Нарисовать оси } procedure DrawAxis(var Rect;Xo,Yo,Color:word); { Рисование граничных значений по углам рамки } procedure DrawBounds(Xmin,Xmax,Ymin,Ymax:real;var Rect:trect;Color:word); { Рисование координатной сетки } procedure DrawGridLines(NgrX,NgrY:word;var Rect:trect;Color:word); { Вывод координат точек пересечения } procedure WriteCoord(var RootMas;K:word;var Rect;Color:word); implementation { Нарисовать оси } procedure DrawAxis(var Rect;Xo,Yo,Color:word); var oldcolor:word; begin oldcolor:=getcolor; setcolor(color); line(Xo,OriginY,Xo,OriginY+Ny); line(OriginX,Yo,OriginX+Nx,Yo); setcolor(oldcolor); end; { Рисование граничных значений по углам рамки } procedure DrawBounds(Xmin,Xmax,Ymin,Ymax:real;var Rect:trect;Color:word); begin outtextxy(rect.origin.x,rect.origin.y+rect.size.y+15,floattostr(Xmin)); outtextxy(rect.origin.x+rect.size.x,rect.origin.y+rect.size.y+15,floattostr(Xmax)); outtextxy(rect.origin.x-30,rect.origin.y+rect.size.y,floattostr(Ymin)); outtextxy(rect.origin.x-30,rect.origin.y,floattostr(Ymax)); end; { Рисование координатной сетки } procedure DrawGridLines(NgrX,NgrY:word;var Rect:trect;Color:word); var oldcolor:word; dx,dy,x0,y0,x1,y1:word; begin oldcolor:=getcolor; setcolor(color); dx:=round(rect.size.x/ngrx); dy:=round(rect.size.y/ngry); y1:=rect.origin.y+rect.size.y; x0:=rect.origin.x; while x0<=(rect.origin.x+rect.size.x-1) do begin line(x0,rect.origin.y,x0,y1); x0:=x0+dx; end; y0:=rect.origin.y; x1:=rect.origin.x+rect.size.x; while y0<=(rect.origin.y+rect.size.y-1) do begin line(rect.origin.x,y0,x1,y0); y0:=y0+dy; end; end; { Вывод координат точек пересечения } procedure WriteCoord(var RootMas;K:word;var Rect;Color:word); begin end; end.
Объяснение кода листинга программы
{* Процедуры и функции для работы с графикой ***} unit Draw2; interface uses consts, types, graph, crt, sysutils; { Нарисовать оси } procedure DrawAxis(var Rect: trect; Xo, Yo, Color: word); var oldcolor: word; begin oldcolor := getcolor; setcolor(color); line(Xo, OriginY, Xo, OriginY + Ny); line(OriginX, Yo, OriginX + Nx, Yo); setcolor(oldcolor); end; { Рисование граничных значений по углам рамки } procedure DrawBounds(Xmin, Xmax, Ymin, Ymax: real; var Rect: trect; Color: word); begin outtextxy(rect.origin.x, rect.origin.y + rect.size.y + 15, floattostr(Xmin)); outtextxy(rect.origin.x + rect.size.x, rect.origin.y + rect.size.y + 15, floattostr(Xmax)); outtextxy(rect.origin.x — 30, rect.origin.y + rect.size.y, floattostr(Ymin)); outtextxy(rect.origin.x — 30, rect.origin.y, floattostr(Ymax)); end; { Рисование координатной сетки } procedure DrawGridLines(NgrX, NgrY: word; var Rect: trect; Color: word); var oldcolor: word; dx, dy, x0, y0, x1, y1: word; begin oldcolor := getcolor; setcolor(color); dx := round(rect.size.x / NgrX); dy := round(rect.size.y / NgrY); y1 := rect.origin.y + rect.size.y; x0 := rect.origin.x; while x0 < = rect.origin.x + rect.size.x — 1 do begin line(x0, rect.origin.y, x0, y1); x0 := x0 + dx; end; y0 := rect.origin.y; x1 := rect.origin.x + rect.size.x; while y0 < = rect.origin.y + rect.size.y — 1 do begin line(rect.origin.x, y0, x1, y0); y0 := y0 + dy; end; end; { Вывод координат точек пересечения } procedure WriteCoord(var RootMas: TRootMas; K: word; var Rect: trect; Color: word); begin end; end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д