При помощи простейшей графики нарисовать счеты, отображающие числа - QBasic

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

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

Заданное число (не обязательно целое) отложить на бухгалтерских счетах, изображенных на экране

Решение задачи: «При помощи простейшей графики нарисовать счеты, отображающие числа»

textual
Листинг программы
  1. DEFINT A-Z
  2. DECLARE SUB DrawBone (x, y, tip)
  3.   CLS
  4. St: INPUT "Vvedite chislo: ", n#
  5. IntPart$ = LTRIM$(STR$(INT(n#)))
  6. Drb$ = LTRIM$(STR$(n# - INT(n#)))
  7. DrobPart$ = LTRIM$(STR$(INT((n# - INT(n#)) * 1000)))
  8. IF LEN(IntPart$) > 7 THEN
  9.   COLOR 12: PRINT "Slishkom bolshoe chislo... Povtorite vvod!"
  10.   COLOR 7: GOTO St
  11. END IF
  12. SCREEN 12
  13.  FOR u = 1 TO 5: OUT &H3C8, u: OUT &H3C9, 0: OUT &H3C9, 0: OUT &H3C9, 0: NEXT
  14.  
  15. LINE (0, 0)-(639, 479), 1, BF
  16. FOR u = 1 TO 250
  17.    x = RND * 639: y = RND * 479
  18.    r = RND * 40 + 10: j = 4 + RND * 10
  19.    CIRCLE (x, y), r, 5, 0, 6.28, j
  20.    PAINT (x, y), 2, 5
  21.    CIRCLE (x, y), r, 2, 0, 6.28, j
  22.    r = r / 2
  23.    CIRCLE (x, y), r, 5, 0, 6.28, j
  24.    PAINT (x, y), 3, 5
  25.    CIRCLE (x, y), r, 3, 0, 6.28, j
  26. NEXT
  27.   LINE (140, 0)-(490, 479), 5, B
  28.   PAINT (0, 0), 5
  29.   LINE (160, 20)-(470, 459), 5, BF
  30.   PAINT (639, 0), 5
  31. FOR y = 0 TO 10
  32.   FOR i = 0 TO 155
  33.     PSET (160 + i, y * 37 + 54), i \ 17 + 5 + RND
  34.     PSET (160 + i, y * 37 + 55), i \ 17 + 5 + RND
  35.     PSET (470 - i, y * 37 + 54), i \ 17 + 5 + RND
  36.     PSET (470 - i, y * 37 + 55), i \ 17 + 5 + RND
  37.   NEXT
  38. NEXT
  39.   OUT &H3C8, 1: OUT &H3C9, 156 \ 4: OUT &H3C9, 128 \ 4: OUT &H3C9, 68 \ 4
  40.   OUT &H3C8, 2: OUT &H3C9, 148 \ 4: OUT &H3C9, 123 \ 4: OUT &H3C9, 82 \ 4
  41.   OUT &H3C8, 3: OUT &H3C9, 128 \ 4: OUT &H3C9, 80 \ 4: OUT &H3C9, 30 \ 4
  42.   OUT &H3C8, 4: OUT &H3C9, 110 \ 4: OUT &H3C9, 56 \ 4: OUT &H3C9, 3 \ 4
  43.   FOR i = 0 TO 10
  44.     OUT &H3C8, i + 5: OUT &H3C9, i * 6: OUT &H3C9, i * 6: OUT &H3C9, i * 6
  45.   NEXT
  46. IF LEN(Drb$) > 3 THEN
  47.   PRINT "Drobnaya chast"
  48.   PRINT "urezana do"
  49.   PRINT "tysachnyh!!!"
  50. END IF
  51. y2 = 460
  52. FOR y = 0 TO 10
  53.     IF y < 7 THEN
  54.     c = VAL(MID$(IntPart$, 7 - y, 1))
  55.       FOR k = 1 TO c
  56.         LINE (500 + k * 3, y * 37 + 50)-(500 + k * 3, y * 37 + 58), 15
  57.       NEXT
  58.     ELSEIF y > 7 THEN
  59.      d = VAL(MID$(DrobPart$, y - 7, 1))
  60.       FOR k = 1 TO d
  61.         LINE (500 + k * 3, y * 37 + 50)-(500 + k * 3, y * 37 + 58), 15
  62.       NEXT
  63.     END IF
  64.   FOR i = 0 TO 9
  65.      IF y < 7 THEN
  66.        IF i = 4 OR i = 5 THEN Ty = 1 ELSE Ty = 0
  67.        DrawBone y2, y * 37 + 54, Ty
  68.        IF i = 9 - c THEN y2 = y2 - 185
  69.      ELSEIF y > 7 THEN
  70.        IF i = 4 OR i = 5 THEN Ty = 1 ELSE Ty = 0
  71.        DrawBone y2, y * 37 + 54, Ty
  72.        IF i = 9 - d THEN y2 = y2 - 185
  73.      ELSE
  74.        IF i = 1 OR i = 2 THEN Ty = 1 ELSE Ty = 0
  75.        IF i < 4 THEN DrawBone y2, y * 37 + 54, Ty
  76.      END IF
  77.      y2 = y2 - 12
  78.   NEXT
  79.   y2 = 460
  80. NEXT
  81. WHILE INKEY$ = "": WEND
  82.  
  83. SUB DrawBone (x, y, tip)
  84. r = 15
  85.  IF tip = 0 THEN
  86.    CIRCLE (x, y), r, 15, 0, 6.28, 3
  87.    PAINT (x, y), 4, 15
  88.    CIRCLE (x, y), r, 4, 0, 6.28, 3
  89.    r = r / 4
  90.    CIRCLE (x, y), r, 15, 0, 6.28, 3
  91.    PAINT (x, y), 3, 15
  92.    CIRCLE (x, y), r, 3, 0, 6.28, 3
  93.    r = r / 2
  94.    CIRCLE (x, y), r, 15, 0, 6.28, 3
  95.    PAINT (x, y), 1, 15
  96.    CIRCLE (x, y), r, 1, 0, 6.28, 3
  97.    PSET (x, y), 13
  98.  ELSE
  99.    CIRCLE (x, y), r, 15, 0, 6.28, 3
  100.    PAINT (x, y), 6, 15
  101.    CIRCLE (x, y), r, 6, 0, 6.28, 3
  102.    r = r / 4
  103.    CIRCLE (x, y), r, 15, 0, 6.28, 3
  104.    PAINT (x, y), 7, 15
  105.    CIRCLE (x, y), r, 7, 0, 6.28, 3
  106.    r = r / 2
  107.    CIRCLE (x, y), r, 15, 0, 6.28, 3
  108.    PAINT (x, y), 10, 15
  109.    CIRCLE (x, y), r, 10, 0, 6.28, 3
  110.    PSET (x, y), 14
  111.  
  112.  END IF
  113. END SUB

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


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

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

15   голосов , оценка 3.667 из 5

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

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

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