Построить множество всех треугольников с вершинами в заданных точках, которые не пересекаются - 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 выполняет следующие действия:
- Запрашивает у пользователя ввод количества вершин треугольников (n).
- Генерирует случайные координаты для каждой вершины (x(i), y(i)).
- Инициализирует переменную z(i) для каждой вершины значением 0.
- Создает графическое окно с координатами (-10, 10)-(10, -10).
- Используя цикл, проверяет каждую комбинацию из трех вершин на возможность образования треугольника.
- Если треугольник можно образовать, то выводит его на экран с помощью функции LINE.
- Переменная z0 используется для отслеживания предыдущей вершины, а zz - для отслеживания следующей вершины, которую необходимо проверить.
- Цикл заканчивается, когда все возможные комбинации вершин были проверены.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д