Построить множество всех треугольников с вершинами в заданных точках, которые не пересекаются - QBasic

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

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

Заданное случайное множество точек. Построить множество всех треугольников с вершинами в заданных точках, которые не пересекаются. Часть проги уже есть, но треугольники пересеются, теперь нужно сделать, что бы не пересекались. Большое спасибо

Решение задачи: «Построить множество всех треугольников с вершинами в заданных точках, которые не пересекаются»

textual
Листинг программы
DEFSNG X-Y
DEFINT I-J, Z
OPTION BASE 1
CLS
DO
   INPUT "Vvedite N KRATNOE 3"; n
LOOP WHILE n < 3 AND n MOD 3 <> 0
 
DIM x(n)
DIM y(n)
DIM z(n)
 
FOR i = 1 TO n
   x(i) = 20 * RND - 10
   y(i) = 20 * RND - 10
   z(i) = 0
NEXT i
 
z0 = -10
zz = -10
SCREEN 12
WINDOW (-10, 10)-(10, -10)
 
FOR j = 0 TO n - 3 STEP 3
   x1 = x(1 + j)
   y1 = y(1 + j)
   x2 = x(2 + j)
   y2 = y(2 + j)
   x3 = x(3 + j)
   y3 = y(3 + j)
   z(1 + j) = 1
   z(2 + j) = 1
   z(3 + j) = 1
   IF y1 > y2 THEN
      SWAP y1, y2
      SWAP x1, x2
   END IF
   IF y1 > y3 THEN
      SWAP y1, y3
      SWAP x1, x3
   END IF
   IF y2 > y3 THEN
      SWAP y2, y3
      SWAP x2, x3
   END IF
 
   FOR i = 4 + j TO n
      IF y1 > y(i) AND y(1) > z0 AND z(i) = 0 THEN
         y1 = y(i)
         x1 = x(i)
         z(1 + j) = 1
      ELSEIF y2 > y(i) AND y(2) > z0 AND z(i) = 0 THEN
         y2 = y(i)
         x2 = x(i)
         z(2 + j) = 1
      ELSEIF y3 > y(3) AND y(3) > z0 AND z(i) = 0 THEN
         y3 = y(i)
         x3 = x(i)
         z(3 + j) = 1
         zz = y3
      END IF
   NEXT i
 
   LINE (x1, y1)-(x2, y2), 11
   LINE (x2, y2)-(x3, y3), 11
   LINE (x3, y3)-(x1, y1), 11
   z0 = zz
NEXT j
END

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

Код на языке QBasic выполняет следующие действия:

  1. Запрашивает у пользователя ввод количества вершин треугольников (n).
  2. Генерирует случайные координаты для каждой вершины (x(i), y(i)).
  3. Инициализирует переменную z(i) для каждой вершины значением 0.
  4. Создает графическое окно с координатами (-10, 10)-(10, -10).
  5. Используя цикл, проверяет каждую комбинацию из трех вершин на возможность образования треугольника.
  6. Если треугольник можно образовать, то выводит его на экран с помощью функции LINE.
  7. Переменная z0 используется для отслеживания предыдущей вершины, а zz - для отслеживания следующей вершины, которую необходимо проверить.
  8. Цикл заканчивается, когда все возможные комбинации вершин были проверены.

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


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

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

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