При помощи простейшей графики нарисовать счеты, отображающие числа - QBasic
Формулировка задачи:
Заданное число (не обязательно целое) отложить на бухгалтерских счетах, изображенных на экране
Решение задачи: «При помощи простейшей графики нарисовать счеты, отображающие числа»
textual
Листинг программы
- DEFINT A-Z
- DECLARE SUB DrawBone (x, y, tip)
- CLS
- St: INPUT "Vvedite chislo: ", n#
- IntPart$ = LTRIM$(STR$(INT(n#)))
- Drb$ = LTRIM$(STR$(n# - INT(n#)))
- DrobPart$ = LTRIM$(STR$(INT((n# - INT(n#)) * 1000)))
- IF LEN(IntPart$) > 7 THEN
- COLOR 12: PRINT "Slishkom bolshoe chislo... Povtorite vvod!"
- COLOR 7: GOTO St
- END IF
- SCREEN 12
- FOR u = 1 TO 5: OUT &H3C8, u: OUT &H3C9, 0: OUT &H3C9, 0: OUT &H3C9, 0: NEXT
- LINE (0, 0)-(639, 479), 1, BF
- FOR u = 1 TO 250
- x = RND * 639: y = RND * 479
- r = RND * 40 + 10: j = 4 + RND * 10
- CIRCLE (x, y), r, 5, 0, 6.28, j
- PAINT (x, y), 2, 5
- CIRCLE (x, y), r, 2, 0, 6.28, j
- r = r / 2
- CIRCLE (x, y), r, 5, 0, 6.28, j
- PAINT (x, y), 3, 5
- CIRCLE (x, y), r, 3, 0, 6.28, j
- NEXT
- LINE (140, 0)-(490, 479), 5, B
- PAINT (0, 0), 5
- LINE (160, 20)-(470, 459), 5, BF
- PAINT (639, 0), 5
- FOR y = 0 TO 10
- FOR i = 0 TO 155
- PSET (160 + i, y * 37 + 54), i \ 17 + 5 + RND
- PSET (160 + i, y * 37 + 55), i \ 17 + 5 + RND
- PSET (470 - i, y * 37 + 54), i \ 17 + 5 + RND
- PSET (470 - i, y * 37 + 55), i \ 17 + 5 + RND
- NEXT
- NEXT
- OUT &H3C8, 1: OUT &H3C9, 156 \ 4: OUT &H3C9, 128 \ 4: OUT &H3C9, 68 \ 4
- OUT &H3C8, 2: OUT &H3C9, 148 \ 4: OUT &H3C9, 123 \ 4: OUT &H3C9, 82 \ 4
- OUT &H3C8, 3: OUT &H3C9, 128 \ 4: OUT &H3C9, 80 \ 4: OUT &H3C9, 30 \ 4
- OUT &H3C8, 4: OUT &H3C9, 110 \ 4: OUT &H3C9, 56 \ 4: OUT &H3C9, 3 \ 4
- FOR i = 0 TO 10
- OUT &H3C8, i + 5: OUT &H3C9, i * 6: OUT &H3C9, i * 6: OUT &H3C9, i * 6
- NEXT
- IF LEN(Drb$) > 3 THEN
- PRINT "Drobnaya chast"
- PRINT "urezana do"
- PRINT "tysachnyh!!!"
- END IF
- y2 = 460
- FOR y = 0 TO 10
- IF y < 7 THEN
- c = VAL(MID$(IntPart$, 7 - y, 1))
- FOR k = 1 TO c
- LINE (500 + k * 3, y * 37 + 50)-(500 + k * 3, y * 37 + 58), 15
- NEXT
- ELSEIF y > 7 THEN
- d = VAL(MID$(DrobPart$, y - 7, 1))
- FOR k = 1 TO d
- LINE (500 + k * 3, y * 37 + 50)-(500 + k * 3, y * 37 + 58), 15
- NEXT
- END IF
- FOR i = 0 TO 9
- IF y < 7 THEN
- IF i = 4 OR i = 5 THEN Ty = 1 ELSE Ty = 0
- DrawBone y2, y * 37 + 54, Ty
- IF i = 9 - c THEN y2 = y2 - 185
- ELSEIF y > 7 THEN
- IF i = 4 OR i = 5 THEN Ty = 1 ELSE Ty = 0
- DrawBone y2, y * 37 + 54, Ty
- IF i = 9 - d THEN y2 = y2 - 185
- ELSE
- IF i = 1 OR i = 2 THEN Ty = 1 ELSE Ty = 0
- IF i < 4 THEN DrawBone y2, y * 37 + 54, Ty
- END IF
- y2 = y2 - 12
- NEXT
- y2 = 460
- NEXT
- WHILE INKEY$ = "": WEND
- SUB DrawBone (x, y, tip)
- r = 15
- IF tip = 0 THEN
- CIRCLE (x, y), r, 15, 0, 6.28, 3
- PAINT (x, y), 4, 15
- CIRCLE (x, y), r, 4, 0, 6.28, 3
- r = r / 4
- CIRCLE (x, y), r, 15, 0, 6.28, 3
- PAINT (x, y), 3, 15
- CIRCLE (x, y), r, 3, 0, 6.28, 3
- r = r / 2
- CIRCLE (x, y), r, 15, 0, 6.28, 3
- PAINT (x, y), 1, 15
- CIRCLE (x, y), r, 1, 0, 6.28, 3
- PSET (x, y), 13
- ELSE
- CIRCLE (x, y), r, 15, 0, 6.28, 3
- PAINT (x, y), 6, 15
- CIRCLE (x, y), r, 6, 0, 6.28, 3
- r = r / 4
- CIRCLE (x, y), r, 15, 0, 6.28, 3
- PAINT (x, y), 7, 15
- CIRCLE (x, y), r, 7, 0, 6.28, 3
- r = r / 2
- CIRCLE (x, y), r, 15, 0, 6.28, 3
- PAINT (x, y), 10, 15
- CIRCLE (x, y), r, 10, 0, 6.28, 3
- PSET (x, y), 14
- END IF
- END SUB
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д