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