Capacity (2) = 5

Capacity(3) = 3

Volume(1) = 8

Volume(2) = 0

Volume(3) = 0

Count% = 0

CLS

PRINT "Имеются 3 сосуда емкостью 8л, 5л и Зл." 'вывод правил игры

PRINT "Первый из них полон, другие два пустые."

PRINT "Переливая жидкость из сосуда в сосуд, "

PRINT "получи по 4л в первом и втором. "

PRINT "Разрешается переливать из сосуда в сосуд"

PRINT "до заполнения одного из них"

PRINT "или до опорожнения другого."

LOCATE 10, 10 'вывод исходного состояния

PRINT "Номер 1 2 3"

LOCATE 11, 10

PRINT "Емкость 8 5 3"

LOCATE 12, 10

PRINT "Налито 8 0 0"

Циклическая часть программы начинается со счета количества переливаний (задача может быть решена семью переливаниями). При слишком большом количестве переливаний выдается сообщение о проигрыше и выполняется команда выхода из цикла.

DO 'начало цикла игры

Count% = Countt + 1 'счет количества переливаний IF Count% > 7 THEN 'проверка условия проигрыша

LOCATE 17, 2

PRINT "Увы, Вы проиграли..."

EXIT DO END IF

Если количество переливаний еще не вышло за допустимые пределы, то запрашивается номер сосуда, из которого выливают. При корректном вводе номера производится проверка содержащегося в нем объема воды. Если сосуд не пустой, то выполняется команда выхода из цикла, иначе выдается замечание и звуковой сигнал, а через секунду вновь повторяется запрос.

DO 'ввод номера для выливания LOCATE 14, 2

LIME INPUT "Из какого сосуда выливаем? "; Number$ Frst% = VAL(Number$) IF ABS(Frst% - 2) < 2 THEN IF Volume(Frst%) > 0 THEM

EXIT DO ELSE

LOCATE 14, 2: PRINT "Этот сосуд пуст!"; SPC(20);

ВЕЕР: SLEEP 1 END IF END IF LOOP

Затем запрашивается номер сосуда, в который наливают. Этот номер также проверяется на корректность. Кроме того производятся провер-