При помощи простейшей графики нарисовать счеты, отображающие числа - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д