Определить, какое количество целых полос потребуется для оклейки помещения - 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

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


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

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

14   голосов , оценка 4 из 5
Похожие ответы