Вывести 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.

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

  1. Вектор задан как структура с полями x1, y1, x2, y2 типа integer.
  2. Задается константа n=5, которая определяет количество векторов.
  3. Функция Ugol вычисляет угол между векторами p.x1, p.y1 и p.x2, p.y2.
  4. Если (p.x2>p.x1) и (p.y2<=p.y1), то Ugol:=arctan((p.y1-p.y2)/(p.x2-p.x1)).
  5. Если (p.x2>p.x1) и (p.y2>p.y1), то Ugol:=arctan((p.y1-p.y2)/(p.x2-p.x1))+2*pi.
  6. Если p.x2<p.x1, то Ugol:=arctan((p.y1-p.y2)/(p.x2-p.x1))+pi.
  7. Если p.x2=p.x1 и (p.y2<p.y1), то Ugol:=pi/2.
  8. Если p.x2=p.x1 и (p.y2>p.y1), то Ugol:=3*pi/2.
  9. Если p.x2=p.x1 и (p.y2=p.y1), то Ugol:=0.
  10. Процедура vector рисует вектор p на графике.
  11. Для каждого вектора в массиве v выполняется итерация, которая включает чтение координат из файла и вызов функции vector.
  12. Векторы заданы случайным образом.
  13. Векторы рисуются на графике с помощью функции line.
  14. Векторы сдвигаются на экране с помощью функций x3, y3, x4, y4.
  15. Функция x3 вычисляет новое значение x3 вектора, сдвигая его на 20 единиц вправо или влево в зависимости от значения u.
  16. Функция y3 вычисляет новое значение y3 вектора, сдвигая его на 20 единиц вверх или вниз в зависимости от значения u.
  17. Функция x4 вычисляет новое значение x4 вектора, сдвигая его на 20 единиц вправо или влево в зависимости от значения u.
  18. Функция y4 вычисляет новое значение y4 вектора, сдвигая его на 20 единиц вверх или вниз в зависимости от значения u.
  19. График обновляется после каждого сдвига вектора.
  20. Файл koordinaty.txt используется для хранения координат векторов.

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


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

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

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