Вычисление координат центра описанной окружности - QBasic

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

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

Задан треугольник координатами своих вершин Требуется определить координаты центра описанной окружности Сначала я аналитически решил эту задачу. Потом написал программу. Она не только вычисляет координаты центра описанной окружности. Но и вычисляет расстояние от центра до каждой вершины. Все результаты выдаёт на экран. Совпадение трёх последних чисел означает, что координаты вычисленного центра соответствуют действительности, ведь такая точка только одна!! (программа проверена)
Листинг программы
  1. DEFSNG A-C, R-S, X-Z
  2. CLS
  3. INPUT "KOORD. A(x,y)"; x1, y1
  4. INPUT "KOORD. B(x,y)"; x2, y2
  5. INPUT "KOORD. C(x,y)"; x3, y3
  6. DEF FNR (x, y, x0, y0)
  7. FNR = SQR((x - x0) ^ 2 + (y - y0) ^ 2)
  8. END DEF
  9. x12 = x1 - x2
  10. x23 = x2 - x3
  11. x31 = x3 - x1
  12. y12 = y1 - y2
  13. y23 = y2 - y3
  14. y31 = y3 - y1
  15. z = x12 * y31 - y12 * x31
  16. z1 = x1 ^ 2 + y1 ^ 2
  17. z2 = x2 ^ 2 + y2 ^ 2
  18. z3 = x3 ^ 2 + y3 ^ 2
  19. zx = y12 * z3 + y23 * z1 + y31 * z2
  20. zy = x12 * z3 + x23 * z1 + x31 * z2
  21. rx = -.5 * zx / z
  22. ry = .5 * zy / z
  23. PRINT "KOORDINATY CENTRA O = "; rx; ry
  24. PRINT FNR(x1, y1, rx, ry)
  25. PRINT FNR(x2, y2, rx, ry)
  26. PRINT FNR(x3, y3, rx, ry)
  27. END
Удачи вам!

Решение задачи: «Вычисление координат центра описанной окружности»

textual
Листинг программы
  1. DECLARE SUB pr0(r1, r2)
  2. DECLARE SUB pr1(x, y)
  3. DIM x(1 TO 2, t TO 3)
  4. DATA 1, 3, 1, 1, 3, 1
  5. FOR i=1 TO 3
  6.     READ x(1, i), x(2, i)
  7. NEXT
  8. k11=x(1, 1)-x(1, 2)
  9. k12=x(2, 2)-x(2, 1)
  10. k21=x(1, 3)-x(1, 2)
  11. k22=x(2, 2)-x(2, 3)
  12. b11=k12*(x(2, 1)+x(2, 2))-k11*(x(1, 1)+x(1, 2))
  13. b12=k12*2
  14. b21=k22*(x(2, 2)+x(2, 3))-k21*(x(1, 2)+x(1, 3))
  15. b22=k22*2
  16. r1=(b12*b21-b11*b22)*k12*k22
  17. r2=(k11*k22-k12*k21)*b12*b22
  18. IF r1=0 AND r2=0 THEN
  19.     FOR i=1 TO 3
  20.         IF x(1, i)<min OR i=1 THEN min=x(1, i)
  21.         IF x(1, i)>max OR i=1 THEN max=x(1, i)
  22.     NEXT
  23.     r1=max+min
  24.     r2=2
  25. EndIf
  26. IF k12>0 THEN
  27.     r3=r1*k11*b12+r2*k12*b11
  28.     r4=r2*k12*b12
  29. ELSE
  30.     r3=r1*k21*b22+r2*k22*b21
  31.     r4=r2*k22*b22
  32. EndIf
  33. PRINT "x:"
  34. CALL pr1(r1, r2)
  35. CALL pr0(r1, r2)
  36. PRINT "y:"
  37. CALL pr1(r3, r4)
  38. CALL pr0(r3, r4)
  39. SLEEP
  40.  
  41. SUB pr0(r1, r2)
  42. rr1$=STR$(r1)
  43. rr2$=STR$(r2)
  44. IF LEN(rr1$)>LEN(rr2$) THEN i=LEN(rr1$) ELSE i=LEN(rr2$)
  45. PRINT SPACE$((i-LEN(rr1$))/2)&rr1$
  46. PRINT STRING$(i, CHR$(196))
  47. PRINT SPACE$((i-LEN(rr2$))/2)&rr2$
  48. END SUB
  49.  
  50. SUB pr1(x, y)
  51.     i=2
  52.     DO WHILE i<x
  53.         IF x MOD i = 0 THEN
  54.             IF y MOD i = 0 THEN x=x/i: y=y/i: i=i-1
  55.         EndIf
  56.         i=i+1
  57.     LOOP
  58. END SUB

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


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

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

12   голосов , оценка 3.833 из 5

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

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

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