Вывести 25 векторов, координаты которых заданы случайным образом - Pascal ABC
Формулировка задачи:
Здравствуйте, помогите пожалуйста с программой. Нужно чтобы паскаль выводил 25 векторов координаты заданы рандомно. Как они должны быть расположены показано на рисунке. Попозже выложу, что мы уже сделали. А именно мы смогли сделать рандомные координаты нам помоч с выводом.
Решение задачи: «Вывести 25 векторов, координаты которых заданы случайным образом»
textual
Листинг программы
uses graphABC; type vect=record x1,y1,x2,y2:integer; end; const n=5; function Ugol(p:vect):real; begin if (p.x2>p.x1)and(p.y2<=p.y1) then Ugol:=arctan((p.y1-p.y2)/(p.x2-p.x1)) else if (p.x2>p.x1)and(p.y2>p.y1) then Ugol:=arctan((p.y1-p.y2)/(p.x2-p.x1))+2*pi else if p.x2<p.x1 then Ugol:=arctan((p.y1-p.y2)/(p.x2-p.x1))+pi else if p.x2=p.x1 then begin if p.y2<p.y1 then Ugol:=pi/2 else if p.y2>p.y1 then Ugol:=3*pi/2 else Ugol:=0; end; end; procedure vector(p:vect); var x3,y3,x4,y4:integer; u:real; begin line(p.x1,p.y1,p.x2,p.y2); u:=ugol(p); x3:=p.x2-round(20*cos(u+pi/10)); y3:=p.y2+round(20*sin(u+pi/10)); line(p.x2,p.y2,x3,y3); x4:=p.x2-round(20*cos(u-pi/10)); y4:=p.y2+round(20*sin(u-pi/10)); line(p.x2,p.y2,x4,y4); end; var v:array[1..n,1..n] of vect; i,j,k:byte; x,y:integer; begin setwindowsize(520,520); centerwindow; assign(f,'koordinaty.txt'); rewrite(f); randomize; y:=10; for i:=1 to 5 do begin x:=10; for j:=1 to 5 do begin k:=random(2); if k=0 then begin v[i,j].x1:=x+5; v[i,j].x2:=x+95; end else begin v[i,j].x2:=x+5; v[i,j].x1:=x+95; end; write(f,' ',v[i,j].x1,' ',v[i,j].y1,' ',v[i,j].x2,' ',v[i,j].y2); close(f); {v[i,j].y1:=y+5+random(90); v[i,j].y2:=y+5+random(90); vector(v[i,j]); x:=x+100; } assign('koordinaty.txt'); reset(f); for i:=1 to 5 do for j:=1 to 5 do begin read(f,v[i,j].x1,v[i,j].y1,v[i,j].x2,v[i,j].y2); vector(v[i,j]); end; close(f); end; y:=y+100; end; end.
Объяснение кода листинга программы
- Вектор задан как структура с полями x1, y1, x2, y2 типа integer.
- Задается константа n=5, которая определяет количество векторов.
- Функция Ugol вычисляет угол между векторами p.x1, p.y1 и p.x2, p.y2.
- Если (p.x2>p.x1) и (p.y2<=p.y1), то Ugol:=arctan((p.y1-p.y2)/(p.x2-p.x1)).
- Если (p.x2>p.x1) и (p.y2>p.y1), то Ugol:=arctan((p.y1-p.y2)/(p.x2-p.x1))+2*pi.
- Если p.x2<p.x1, то Ugol:=arctan((p.y1-p.y2)/(p.x2-p.x1))+pi.
- Если p.x2=p.x1 и (p.y2<p.y1), то Ugol:=pi/2.
- Если p.x2=p.x1 и (p.y2>p.y1), то Ugol:=3*pi/2.
- Если p.x2=p.x1 и (p.y2=p.y1), то Ugol:=0.
- Процедура vector рисует вектор p на графике.
- Для каждого вектора в массиве v выполняется итерация, которая включает чтение координат из файла и вызов функции vector.
- Векторы заданы случайным образом.
- Векторы рисуются на графике с помощью функции line.
- Векторы сдвигаются на экране с помощью функций x3, y3, x4, y4.
- Функция x3 вычисляет новое значение x3 вектора, сдвигая его на 20 единиц вправо или влево в зависимости от значения u.
- Функция y3 вычисляет новое значение y3 вектора, сдвигая его на 20 единиц вверх или вниз в зависимости от значения u.
- Функция x4 вычисляет новое значение x4 вектора, сдвигая его на 20 единиц вправо или влево в зависимости от значения u.
- Функция y4 вычисляет новое значение y4 вектора, сдвигая его на 20 единиц вверх или вниз в зависимости от значения u.
- График обновляется после каждого сдвига вектора.
- Файл koordinaty.txt используется для хранения координат векторов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д