Как нарисовать график на паскале - Pascal

Узнай цену своей работы

Формулировка задачи:

сама прога есть, а как сделать график незнаю

Решение задачи: «Как нарисовать график на паскале»

textual
Листинг программы
uses crt,graph;
const t=0.0001;{точность определения ноля}
type Point=record{тип запись - точка}
           x,y:real;{с координатами}
           end;
{логическая функция, описывает заштрихованную область}
function F(x,y:real):boolean;
begin
F:=((x>=-3)and(x<=-1.5)and(y<=t)and(y>=x)and(y>=-sqrt(9-x*x)))
   or( (x>=-1.5) and (x<=t) and (y>=-x-3) and(y<=t) )
   or((x>=0) and (x<=3/sqrt(2)) and (((y>=-sqrt(9-x*x)) and(y<=t))
                               or((y>=-x+3)and(y<=sqrt(9-x*x)))))
   or((x>=3/sqrt(2))and(x<=3)and(((y>=-sqrt(9-x*x))and(y<=t))
                              or((y>=-x+3)and(y<=x))))
   or((x>=3)and(x<=4)and(y<=x)and(y>=0))
end;
var x,y:real;
    a:array[1..41,1..20] of Point;{массив точек}
    k,i,j:integer;
    x0,y0,m:integer;
    s:string;
begin
clrscr;
writeln('KOORDINATY TOCHEK V OBLASTI:');{процесс табуляции функции от 2х переменныз}
x:=-3.5;
k:=0;i:=1;
while x<=4.5+t do{по Х}
 begin
  j:=1;
  y:=-3.2;
  while y<=4.0+t do{по У}
   begin
    a[i,j].x:=x;{записываем координаты в масив}
    a[i,j].y:=y;
    if F(x,y) then{если точка в области}
     begin
      k:=k+1;{считаем}
      writeln('x=',x:4:1,'  y=',y:4:1);{выводим на экран координаты}
      if k mod 22=0 then{чер 22 строки задержка, точек очень много}
       begin
        write('Press Enter...');
        readln
       end;
     end;
    y:=y+0.4;
    j:=j+1;{считаем столбцы в матрице}
    if j mod 20=0 then{если кратно 20}
     begin
      j:=1;{снова=1}
      i:=i+1;{новая строка}
     end;
   end;
  x:=x+0.2;
 end;
writeln;
write('Press Enter...');
readln;
m:=0;{переходим в графический режим}
initgraph(m,x0,'');
{центр экрана-начало координат}
x0:=getmaxX div 2;
y0:=getmaxY div 2;
setbkcolor(15);{фон белый}
setcolor(8);{линии темно серые}
line(0,y0,getmaxX,y0);{оси координат}
line(x0,0,x0,getmaxY);
m:=round(getmaxY/9);{масштаб по осям}
for i:=1 to 5 do{количество засечек в одну сторону}
  begin
    line(x0-3,y0-round(i*m),x0+3,y0-round(i*m));{засечки на оси Х}
    line(x0-3,y0+round(i*m),x0+3,y0+round(i*m));
    line(x0+round(i*m),y0-3,x0+round(i*m),Y0+3); {то же на У}
    line(x0-round(i*m),y0-3,x0-round(i*m),Y0+3);
    str(i,s);
    {подписи засечек по Х}
    outtextXY(x0-30,y0-round(i*m),s);
    outtextXY(x0-35,y0+round(i*m),'-'+s);
    {то же по У}
    str(i,s);
    outtextXY(x0+round(i*m),y0+10,s);
    outtextXY(x0-round(i*m),y0+10,'-'+s);
  end;
{центр}
outtextXY(x0+5,y0+10,'0');
{подписи концов осей}
outtextXY(getmaxX-10,y0-10,'X');
outtextXY(x0+10,10, 'Y');
{рисуем картинку}
setcolor(8);
circle(x0,y0,3*m);
line(x0-3*m,y0+3*m,x0+5*m,y0-5*m);
line(x0-5*m,y0-2*m,x0+m,y0+4*m);
line(x0-m,y0-4*m,x0+5*m,y0+2*m);
line(x0+4*m,y0-4*m,x0+4*m,y0+m);
setfillstyle(3,8);{устанавливаем стиль заливки, штрихуем область}
floodfill(x0-2*m,y0+2*m-20,8);
floodfill(x0-20,y0+10,8);
floodfill(x0-10,y0+20,8);
floodfill(x0+20,y0+20,8);
floodfill(x0+m,y0-2*m-20,8);
floodfill(x0+2*m,y0-m-20,8);
floodfill(x0+3*m,y0-2*m,8);
{выводим точки в виде кружочков, а то плохо видно}
setlinestyle(1,0,3);
for i:=1 to 41 do
for j:=1 to 20 do
 begin
  if F(a[i,j].x,a[i,j].y) then setcolor(4){если в области - красные}
  else setcolor(3);{нет - зеленые}
  Circle(x0+round(a[i,j].x*m),y0-round(a[i,j].y*m),1);
 end;
readln
end.

Объяснение кода листинга программы

Этот код написан на языке Pascal и использует библиотеку graph для создания графика. Он рисует график функции F(x,y), где x и y - это координаты точек. Функция F принимает два аргумента и возвращает true, если точка находится в заданной области, и false в противном случае. В коде используется логическая функция, которая определяет, находится ли точка в заданной области. Эта область определяется несколькими условиями, которые проверяют, находится ли точка в определенном диапазоне по каждой оси. Для рисования графика используются функции из библиотеки graph. В частности, функция line используется для рисования линий, а функция circle - для рисования кругов. Также используется функция outtextXY для вывода текста на график. Код также содержит массив точек a, который содержит 41 строку и 20 столбцов. Каждая строка и каждый столбец содержат координаты точек. В конце кода происходит вывод точек в виде кружочков. Для этого используется цикл, который проходит по всем точкам и проверяет, находится ли точка в заданной области. Если да, то устанавливается цвет точки на красный, иначе - на зеленый. Затем для каждой точки рисуется круг.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.5 из 5
Похожие ответы