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

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

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

Заданное случайное множество точек. Построить множество всех треугольников с вершинами в заданных точках, которые не пересекаются. Часть проги уже есть, но треугольники пересеются, теперь нужно сделать, что бы не пересекались. Большое спасибо
Листинг программы
  1. CLS
  2. INPUT "vvedit' k-t' tochok N="; N
  3. INPUT "vvedit' granuchni ymovu xmin="; xmin
  4. INPUT "vvedit' xmax="; xmax
  5. INPUT "vvedit' ymin="; ymin
  6. INPUT "vvedit' ymax="; ymax
  7. SCREEN 12
  8. VIEW (10, 10)-(400, 400), , 1
  9. WINDOW (xmin, ymin)-(xmax, ymax)
  10. DIM x(N)
  11. DIM y(N)
  12. FOR i = 1 TO N
  13. x(i) = xmin + RND * (xmax - xmin)
  14. y(i) = ymin + RND * (ymax - ymin)
  15. NEXT
  16. FOR i = 1 TO N
  17. PSET (x(i), y(i)), 5
  18. NEXT
  19. FOR i = 1 TO N - 2 STEP 3
  20. LINE (x(i), y(i))-(x(i + 1), y(i + 1))
  21. LINE (x(i + 1), y(i + 1))-(x(i + 2), y(i + 2))
  22. LINE (x(i + 2), y(i + 2))-(x(i), y(i))
  23. NEXT

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

textual
Листинг программы
  1. DEFSNG X-Y
  2. DEFINT I-J, Z
  3. OPTION BASE 1
  4. CLS
  5. DO
  6.    INPUT "Vvedite N KRATNOE 3"; n
  7. LOOP WHILE n < 3 AND n MOD 3 <> 0
  8.  
  9. DIM x(n)
  10. DIM y(n)
  11. DIM z(n)
  12.  
  13. FOR i = 1 TO n
  14.    x(i) = 20 * RND - 10
  15.    y(i) = 20 * RND - 10
  16.    z(i) = 0
  17. NEXT i
  18.  
  19. z0 = -10
  20. zz = -10
  21. SCREEN 12
  22. WINDOW (-10, 10)-(10, -10)
  23.  
  24. FOR j = 0 TO n - 3 STEP 3
  25.    x1 = x(1 + j)
  26.    y1 = y(1 + j)
  27.    x2 = x(2 + j)
  28.    y2 = y(2 + j)
  29.    x3 = x(3 + j)
  30.    y3 = y(3 + j)
  31.    z(1 + j) = 1
  32.    z(2 + j) = 1
  33.    z(3 + j) = 1
  34.    IF y1 > y2 THEN
  35.       SWAP y1, y2
  36.       SWAP x1, x2
  37.    END IF
  38.    IF y1 > y3 THEN
  39.       SWAP y1, y3
  40.       SWAP x1, x3
  41.    END IF
  42.    IF y2 > y3 THEN
  43.       SWAP y2, y3
  44.       SWAP x2, x3
  45.    END IF
  46.  
  47.    FOR i = 4 + j TO n
  48.       IF y1 > y(i) AND y(1) > z0 AND z(i) = 0 THEN
  49.          y1 = y(i)
  50.          x1 = x(i)
  51.          z(1 + j) = 1
  52.       ELSEIF y2 > y(i) AND y(2) > z0 AND z(i) = 0 THEN
  53.          y2 = y(i)
  54.          x2 = x(i)
  55.          z(2 + j) = 1
  56.       ELSEIF y3 > y(3) AND y(3) > z0 AND z(i) = 0 THEN
  57.          y3 = y(i)
  58.          x3 = x(i)
  59.          z(3 + j) = 1
  60.          zz = y3
  61.       END IF
  62.    NEXT i
  63.  
  64.    LINE (x1, y1)-(x2, y2), 11
  65.    LINE (x2, y2)-(x3, y3), 11
  66.    LINE (x3, y3)-(x1, y1), 11
  67.    z0 = zz
  68. NEXT j
  69. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы