Как определить принадлежность введенных координат точки, определенной области - QBasic
Формулировка задачи:
Доброго времени суток, помогите определить принадлежность введенных координат точки, определенной области. Необходимую фигуру нарисовал, а вот с определением области непонятки.
Листинг программы
- CLS
- INPUT "Vvedite X: ", x
- INPUT "Vvedite Y: ", y
- SCREEN 12
- WINDOW (-32, -24)-(32, 24)
- LINE (-10, 0)-(10, 0), 8
- LINE (0, -10)-(0, 10), 8
- FOR i = -8 TO 8
- LINE (i, -.4)-(i, .4), 8
- LINE (-.4, i)-(.4, i), 8
- NEXT
- CIRCLE (0, 0), 4, 15, 55 * 3.14 / 180, 300 * 3.14 / 180
- CIRCLE (6, 0), 5, 15, 305 * 3.14 / 180, 220 * 3.14 / 180
- LINE (-4, 0)-(1, 6), 15
- LINE (1, 6)-(9, 6), 15
- LINE (9, 6)-(9, -6), 15
- Flag = 0
- IF ?
- LOCATE 2, 5
- PRINT "Tochka ";
- IF Flag = 1 THEN
- PRINT "popadaet v oblast"
- CIRCLE (x, y), .2, 10
- PAINT (x, y), 10, 10
- ELSE
- PRINT "vne oblasti"
- CIRCLE (x, y), .2, 12
- PAINT (x, y), 12, 12
- END IF
Решение задачи: «Как определить принадлежность введенных координат точки, определенной области»
textual
Листинг программы
- SCREEN 12 ' 640x480x4Bit VGA
- Scaler = 10 ' Масштаб
- DO: Kb$ = INKEY$
- ' Случ точка
- x = RND * 24 - 12
- y = RND * 24 - 12
- ' Области НЕ выделены
- f1 = 0: f2 = 0: f3 = 0: f4 = 0
- ' Левый круг (радиус 4)
- IF x * x + y * y <= 16 THEN f1 = -1
- ' Трапеция
- IF (y < 6 AND y > 0) AND (x + 4 > y) AND x < 9 THEN f2 = -1
- ' Парвый круг (радиус 5)
- IF (x - 6) * (x - 6) + y * y <= 25 THEN f3 = -1
- ' Общая область(логич функция)
- IF (f1 OR f2) AND (NOT f3) OR (f3 AND x > 9) THEN f4 = -1
- ' Проверяем
- cv = 8
- IF f4 THEN cv = 15
- PSET (320 + x * Scaler, 240 - y * Scaler), cv
- LOOP UNTIL Kb$ <> ""
Объяснение кода листинга программы
- Объявлены переменные:
- Scaler (масштаб)
- Kb$ (используется для проверки нажатий клавиш)
- x (координата X точки)
- y (координата Y точки)
- f1 (флаг для левого круга)
- f2 (флаг для трапеции)
- f3 (флаг для правого круга)
- f4 (флаг для общей области)
- cv (значение, которое будет использоваться для вывода точки)
- Задаются начальные значения переменных:
- Scaler = 10
- f1 = 0
- f2 = 0
- f3 = 0
- f4 = 0
- С помощью функции RND генерируются случайные координаты точки:
- x = RND * 24 - 12
- y = RND * 24 - 12
- Проверяются условия для определения принадлежности точки к определенным областям:
- Левый круг (радиус 4): если xx + yy <= 16, то f1 = -1
- Трапеция: если (y < 6 AND y > 0) AND (x + 4 > y) AND x < 9, то f2 = -1
- Правый круг (радиус 5): если (x - 6) (x - 6) + y y <= 25, то f3 = -1
- Общая область: если (f1 OR f2) AND (NOT f3) OR (f3 AND x > 9), то f4 = -1
- Проверяется условие для определения значения переменной cv:
- Если f4 = -1, то cv = 15 (точка будет выводиться)
- Если f4 = 0, то cv = 8 (точка будет выводиться)
- С помощью функции PSET выводится точка на экран по заданным координатам и с заданным значением cv.
- Цикл LOOP UNTIL Kb$ <> `` обеспечивает повторение процесса, пока не будет нажата клавиша.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д