есть 10 литров воды в 10-литровом сосуде, имеются два пустых сосуда емкостью 7 и 4 литра. Как разделить 10 литров в первом сосуде по 5 литров за 8 ходов?
Допустим, 1 литр надо получить в сосуде на 3л. Тогда надо сделать 4 шага: Перелить из 8 в 3 = (5 0 3) Перелить из 3 в 5 = (5 3 0) Перелить из 8 в 3 = (2 3 3) Перелить из 3 в 5 = (2 5 1)
Есть простой подсчета парности скобок. Инициализируем счетчик нулем, а затем читаем строку. Если встречается открывающая скобка, в счетчик посылается +1, если закрывающая, то -1. После просмотра всей строки нулевое значение счетчика скажет нам о равенстве скобок, а ненулевое покажет количество лишних скобок. Каких именно - покажет знак. Попутно замечу, что подобные подсчеты не гарантирует проверки синтаксической правильности расстановки скобок, например, выражение )a+b( синтаксически неверно, но в нем "правильное" количество скобок.
var i,k:integer; s:string; begin Write('Введите строку: '); Readln(s); k:=0; for i:=1 to Length(s) do case s[i] of '(':Inc(k); ')':Dec(k) end; if k=0 then Writeln('Скобки парные') else begin Write('Обнаружено непарных '); if k>0 then Write('открывающих') else Write('закрывающих'); Writeln(' скобок: ',abs(k)) end end.
X увеличивается в цикле с 1 до 4, каждый раз на 1. y каждый раз увеличивается в 2 раза, начиная с 1 и до 2^4 = 16. 1) Тело цикла исполнится 4 раза. 2) x примет значение 5. 3) y примет значение 16. 4) Если написать x <= 5, то тело цикла исполнится 5 раз. На выходе будет x = 6, y = 32. 5) Если написать x >= 5, то тело цикла не будет исполнено ни разу, потому что условие сразу не выполняется. 6) Если написать x > 0, то программа зациклится. Цикл будет исполняться бесконечно, потому что x всегда > 0. 7) Если убрать команду x:=x+1, то программа тоже зациклится. Выхода не будет, потому что x всегда остается равным 1 < 5. 8) Если написать команду x:=x+2, то тело цикла исполнится 2 раза: при x := 1 и при x := 3. На третий раз станет x = 5 и будет выход из цикла. 9) Если написать команду x:=x-1, то программа зациклится. Выхода не будет, потому что x будет уменьшаться и всегда останется < 5.
Тогда надо сделать 4 шага:
Перелить из 8 в 3 = (5 0 3)
Перелить из 3 в 5 = (5 3 0)
Перелить из 8 в 3 = (2 3 3)
Перелить из 3 в 5 = (2 5 1)