Как определить принадлежность введенных координат точки, определенной области - QBasic

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

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

Доброго времени суток, помогите определить принадлежность введенных координат точки, определенной области. Необходимую фигуру нарисовал, а вот с определением области непонятки.
Листинг программы
  1. CLS
  2. INPUT "Vvedite X: ", x
  3. INPUT "Vvedite Y: ", y
  4. SCREEN 12
  5. WINDOW (-32, -24)-(32, 24)
  6. LINE (-10, 0)-(10, 0), 8
  7. LINE (0, -10)-(0, 10), 8
  8. FOR i = -8 TO 8
  9. LINE (i, -.4)-(i, .4), 8
  10. LINE (-.4, i)-(.4, i), 8
  11. NEXT
  12. CIRCLE (0, 0), 4, 15, 55 * 3.14 / 180, 300 * 3.14 / 180
  13. CIRCLE (6, 0), 5, 15, 305 * 3.14 / 180, 220 * 3.14 / 180
  14. LINE (-4, 0)-(1, 6), 15
  15. LINE (1, 6)-(9, 6), 15
  16. LINE (9, 6)-(9, -6), 15
  17. Flag = 0
  18. IF ?
  19. LOCATE 2, 5
  20. PRINT "Tochka ";
  21. IF Flag = 1 THEN
  22. PRINT "popadaet v oblast"
  23. CIRCLE (x, y), .2, 10
  24. PAINT (x, y), 10, 10
  25. ELSE
  26. PRINT "vne oblasti"
  27. CIRCLE (x, y), .2, 12
  28. PAINT (x, y), 12, 12
  29. END IF

Решение задачи: «Как определить принадлежность введенных координат точки, определенной области»

textual
Листинг программы
  1. SCREEN 12    ' 640x480x4Bit VGA
  2.  
  3. Scaler = 10  ' Масштаб
  4.  
  5. DO: Kb$ = INKEY$
  6.     '  Случ точка
  7.   x = RND * 24 - 12
  8.   y = RND * 24 - 12
  9.  
  10.     '  Области НЕ выделены
  11.   f1 = 0: f2 = 0: f3 = 0: f4 = 0
  12.     '  Левый круг (радиус 4)
  13.   IF x * x + y * y <= 16 THEN f1 = -1
  14.     '  Трапеция
  15.   IF (y < 6 AND y > 0) AND (x + 4 > y) AND x < 9 THEN f2 = -1
  16.     '  Парвый круг (радиус 5)
  17.   IF (x - 6) * (x - 6) + y * y <= 25 THEN f3 = -1
  18.     '  Общая область(логич функция)
  19.   IF (f1 OR f2) AND (NOT f3) OR (f3 AND x > 9) THEN f4 = -1
  20.  
  21.    ' Проверяем
  22.    cv = 8
  23.    IF f4 THEN cv = 15
  24.    PSET (320 + x * Scaler, 240 - y * Scaler), cv
  25.  
  26. LOOP UNTIL Kb$ <> ""

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

  1. Объявлены переменные:
    • Scaler (масштаб)
    • Kb$ (используется для проверки нажатий клавиш)
    • x (координата X точки)
    • y (координата Y точки)
    • f1 (флаг для левого круга)
    • f2 (флаг для трапеции)
    • f3 (флаг для правого круга)
    • f4 (флаг для общей области)
    • cv (значение, которое будет использоваться для вывода точки)
  2. Задаются начальные значения переменных:
    • Scaler = 10
    • f1 = 0
    • f2 = 0
    • f3 = 0
    • f4 = 0
  3. С помощью функции RND генерируются случайные координаты точки:
    • x = RND * 24 - 12
    • y = RND * 24 - 12
  4. Проверяются условия для определения принадлежности точки к определенным областям:
    • Левый круг (радиус 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
  5. Проверяется условие для определения значения переменной cv:
    • Если f4 = -1, то cv = 15 (точка будет выводиться)
    • Если f4 = 0, то cv = 8 (точка будет выводиться)
  6. С помощью функции PSET выводится точка на экран по заданным координатам и с заданным значением cv.
  7. Цикл LOOP UNTIL Kb$ <> `` обеспечивает повторение процесса, пока не будет нажата клавиша.

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


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

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

11   голосов , оценка 3.909 из 5

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

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

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