Определить, какое количество целых полос потребуется для оклейки помещения - QBasic (27951)
Формулировка задачи:
Помогите, пожалуйста, с задачкой!
Помещение площадью ахb оклеивается обоями одинакового цвета, но разной ширины s и t мм. При наклейке запускается любое чередование целых полос разной ширины. Определить, какое количество целых полос потребуется для оклейки помещения, чтобы площадь незаклеенной части стен была минимальной.
Решение задачи: «Определить, какое количество целых полос потребуется для оклейки помещения»
textual
Листинг программы
- DECLARE FUNCTION CHECK$ (source$)
- CLS
- star$ = "<br>"
- task$ = "ђ*бзҐв Є®«ЁзҐбвў* Ї®«®б ®Ў®Ґў ¤ўге вЁЇ®ў(а*§«Ёз*®© иЁаЁ*л), *Ґ®Ўе®¤Ё¬®Ј® ¤«п ®Є«Ґ©ЄЁ Ї®¬ҐйҐ*Ёп в*ЄЁ¬ ®Ўа*§®¬, зв®Ўл Ї«®й*¤м *Ґ§*Є«ҐҐ**®© Ї®ўҐае*®бвЁ Ўл«* ¬Ё*Ё¬*«м*®©."
- PRINT task$
- PRINT star$
- DIM a1, m AS STRING
- DIM a, b, s, t AS SINGLE
- DO
- INPUT "‚ўҐ¤ЁвҐ иЁаЁ*г ®Є«ҐЁў*Ґ¬®Ј® Ї®¬ҐйҐ*Ёп : "; a1$
- m$ = CHECK(a1$)
- IF (m$ <> "") THEN PRINT m$
- LOOP UNTIL (m$ = "")
- a = VAL(a1$)
- PRINT star$
- DO
- INPUT "‚ўҐ¤ЁвҐ ¤«Ё*г ®Є«ҐЁў*Ґ¬®Ј® Ї®¬ҐйҐ*Ёп : "; a1$
- m$ = CHECK(a1$)
- IF (m$ <> "") THEN PRINT m$
- LOOP UNTIL (m$ = "")
- b = VAL(a1$)
- PRINT star$
- DO
- INPUT "‚ўҐ¤ЁвҐ иЁаЁ*г ЇҐаў®Ј® ўЁ¤* ®Ў®Ґў : "; a1$
- m$ = CHECK(a1$)
- IF (m$ <> "") THEN
- PRINT m$
- END IF
- IF ((VAL(a1$) > a) AND (VAL(a1$) > b)) THEN
- PRINT "?ЁаЁ** ®ЎҐў *Ґ ¬®¦Ґв Ўлвм Ў®«миҐ а*§¬Ґа®ў Ї®¬ҐйҐ*Ёп!"
- m$ = "111"
- END IF
- LOOP UNTIL (m$ = "")
- s = VAL(a1$)
- PRINT star$
- DO
- INPUT "‚ўҐ¤ЁвҐ иЁаЁ*г ўв®а®Ј® ўЁ¤* ®Ў®Ґў : "; a1$
- m$ = CHECK(a1$)
- IF (m$ <> "") THEN
- PRINT m$
- END IF
- IF (VAL(a1$) = s) THEN
- PRINT "?ЁаЁ** ЇҐаў®Ј® Ё ўв®а®Ј® ўЁ¤®ў ®Ў®Ґў ¤®«¦** Ўлвм а*§«Ёз*®©!"
- m$ = "111"
- END IF
- IF (VAL(a1$) > a AND VAL(a1$) > b) THEN
- PRINT "?ЁаЁ** ®ЎҐў *Ґ ¬®¦Ґв Ўлвм Ў®«миҐ а*§¬Ґа®ў Ї®¬ҐйҐ*Ёп!"
- m$ = "111"
- END IF
- LOOP UNTIL (m$ = "")
- t = VAL(a1$)
- PRINT star$
- perim = 2 * a + 2 * b
- k = FIX((perim / s + perim / t) / 2)
- n = 1
- FOR i = 0 TO k
- FOR j = k TO 0 STEP -1
- IF ((perim - (i * s + j * t)) >= 0) THEN n = n + 1
- NEXT j
- NEXT i
- DIM array(1 TO n, 1 TO 3) AS SINGLE
- n = 1
- max = 1000000
- maxs = 0
- maxt = 0
- FOR i = 0 TO k
- FOR j = k TO 0 STEP -1
- IF (perim - (i * s + j * t) >= 0) THEN
- array(n, 1) = i
- array(n, 2) = j
- array(n, 3) = perim - (i * s + j * t)
- IF (array(n, 3) < max) THEN
- max = array(n, 3)
- maxs = i
- maxt = j
- END IF
- n = n + 1
- END IF
- NEXT j
- NEXT i
- PRINT "Є®«-ў® Ї®«®б иЁаЁ*л"; s; SPACE$(6); "Є®«-ў® Ї®«®б иЁаЁ*л"; t; SPACE$(6); "**Ё¬Ґ*миЁ© ®бв*в®Є"
- REM PRINT SPACE$(8); maxs; SPACE$(27); maxt; SPACE$(18); max
- FOR i = 1 TO (n - 1)
- IF (array(i, 3) = max) THEN
- PRINT SPACE$(8); array(i, 1); SPACE$(27); array(i, 2); SPACE$(18); array(i, 3)
- END IF
- NEXT i
- PRINT star$
- FUNCTION CHECK$ (source$)
- n = VAL(source$)
- IF (n = 0 AND source$ <> "0" AND source$ <> "") THEN
- CHECK = "‚л ўўҐ«Ё ⥪бв! ‚ўҐ¤ЁвҐ Ї®¦*«г©бв* Ї®«®¦ЁвҐ«м*®Ґ зЁб«®!"
- GOTO 1
- END IF
- IF (n = 0 AND source$ = "") THEN
- CHECK = "‚л *ЁзҐЈ® *Ґ ўўҐ«Ё! ‚ўҐ¤ЁвҐ Ї®¦*«г©бв* Ї®«®¦ЁвҐ«м*®Ґ зЁб«®!"
- GOTO 1
- END IF
- IF (n = 0 AND source$ = "0") THEN
- CHECK = "‚л ўўҐ«Ё *®«м. ‚ўҐ¤ЁвҐ Ї®¦*«г©бв* Ї®«®¦ЁвҐ«м*®Ґ зЁб«®!"
- GOTO 1
- END IF
- IF (n < 0) THEN
- CHECK = "‚л ўўҐ«Ё ®ваЁж*⥫м*®Ґ зЁб«®! ‚ўҐ¤ЁвҐ Ї®¦*«г©бв* Ї®«®¦ЁвҐ«м*®Ґ зЁб«®!"
- GOTO 1
- END IF
- IF (n > 0) THEN
- CHECK = ""
- GOTO 1
- END IF
- 1
- END FUNCTION
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д