Построить мозаику из n правильных n угольников - QBasic

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

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

Построить мозаику из правильных n угольников заданного размера, закрасив их разными цветами или применив разные типы штриховок.
Листинг программы
  1. INPUT "‘Количество углов"; n
  2. SCREEN 1
  3. FOR i = 1 TO n
  4. LINE (100 + 70 * (SIN(i * 6.28 / n)), 100 + 70 * (COS(i * 6.28 / n)))-(100 + 70 * (SIN((i + 1) * 6.28 / n)), 100 + 70 * (COS((i + 1) * 6.28 / n)))
  5. NEXT i
n угольник без размеров

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

textual
Листинг программы
  1. CONST Pi = 3.141592653589793#
  2. DECLARE SUB NUgoln (x%, y%, R%, cv%)
  3. DIM SHARED St AS INTEGER, Stu AS SINGLE, R AS INTEGER, n AS INTEGER
  4.  
  5. SCREEN 12
  6.   LOCATE 2, 10: INPUT "R opisannoi okrujnosti  : ", R
  7.   LOCATE 3, 10: INPUT "Tip mnogougolnika [1-3] : ", NTp%
  8.   LOCATE 20, 10: PRINT "- Lubaya knopka dlya vihoda -"
  9. CLS 1
  10. IF NTp% < 1 OR NTp% > 3 OR R < 1 THEN END
  11. SELECT CASE NTp%
  12.   CASE 1: n = 3: Stu = Pi / 6: Stu2 = Stu + Pi
  13.   CASE 2: n = 4: Stu = Pi / 4
  14.   CASE 3: n = 6
  15. END SELECT
  16.   St = R * 2 * SIN(Pi / n)
  17.   Dv = St / (2 * TAN(Pi / n))
  18.   Dv2 = St / 2 * TAN(Pi / n)
  19. SELECT CASE NTp%
  20.   CASE 1: PlusX1 = St: PlusY1 = Dv2: PlusX2 = St / 2: PlusY2 = -Dv
  21.   CASE 2: PlusX1 = St: PlusY1 = St
  22.   CASE 3: PlusX1 = R * 1.5: PlusY1 = Dv * 2: PlusX2 = 0: PlusY2 = Dv
  23. END SELECT
  24.  
  25. y = 0
  26. DO
  27. x = (St AND 1) * PlusX2  ' Смещаем старт позицию для треуг. и шестиуг.
  28. St = St + 1
  29.   DO
  30.    '  Строим многоугольник в нуле
  31.    NUgoln INT(x), INT(y), R, RND * 14 + 1
  32.    
  33.    '  Если шестиугольник
  34.    IF NTp% <> 2 THEN
  35.      savey = y         ' Cохраним высоту
  36.      y = y + PlusY2    ' Шаг по Y
  37.      x = x + PlusX1    ' Шаг по X
  38.        IF NTp% = 1 THEN SWAP Stu, Stu2: x = x - PlusX2
  39.      NUgoln INT(x), INT(y), R, RND * 14 + 1
  40.        IF NTp% = 1 THEN SWAP Stu, Stu2: x = x - PlusX2
  41.      y = savey
  42.    END IF
  43.    x = x + PlusX1    ' Шагаем направо на длину многоугольника
  44.    IF INKEY$ <> "" THEN END
  45.   LOOP UNTIL x > 640
  46. y = y + PlusY1
  47. LOOP UNTIL y > 480
  48.  
  49. SUB NUgoln (x%, y%, R%, cv%)
  50.     xo% = INT(COS(Stu) * R%) + x%
  51.     yo% = INT(SIN(Stu) * R%) + y%
  52.     FOR i = 1 TO n
  53.        xn% = INT(COS((i * 2 * Pi / n) + Stu) * R%) + x%
  54.        yn% = INT(SIN((i * 2 * Pi / n) + Stu) * R%) + y%
  55.        LINE (xo%, yo%)-(xn%, yn%), cv%
  56.        xo% = xn%: yo% = yn%
  57.     NEXT
  58.     PAINT (x%, y%), cv%, cv%
  59. END SUB

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


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

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

9   голосов , оценка 4.111 из 5

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

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

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