Найти - Пользователи
Полная версия: Переливания
Начало » Python для новичков » Переливания
1
longdarknes
Сегодня на уроках информатики пятиклассники разбирали классическую задачу о переливаниях и бла-бла-бла,если переходить сразу к делу,дан алгоритм:
1 - наполнить до краёв сосуд объемом a литров;
2 - наполнить до краёв сосуд объемом b литров;
3 - перелить воду из сосуда объемом b в сосуд объемом a литров;
4 - перелить воду из сосуда объемом a в сосуд объемом b литров;
5 - опорожнить сосуд объемом a литров;
6 - опорожнить сосуд объемом b литров.
Формат входных данных
В первой строке записаны два числа a и b (2 <= a, b <= 1000) -объемы сосудов. Во второй строке записан алгоритм в виде последовательности номеров выполняемых команд без пробелов между номерами - количество команд. Общее число команд не превышает 255.
Формат выходных данных:
Требуется вывести два числа: сначала объем жидкости,находящийся после переливаний в сосуде объемом a литров,а затем - в сосуде b литров.
Пример входного файла
5 8
24
Пример выходных данных
5 3
Товарищи опытные,помогите исправить ошибку. Написал код,но для 3 пункт алгоритма у меня не получается составить формулу. Заранее спасибо.
 from os import system
from math import fabs
import sys
a, b = map(int, input().split())
if a < 2 or b > 1000: print ('Введённые значения некорректны'), sys.exit()
c = list(map(int,input("")))
if c < [7,8,9]:
    for i in range(len(c)):
        if c[i] == 1:
            a1 = a
            if b1 != b:
                b1 = b1
            else: b1 = 0
        if c[i] == 2:
            a1 = 0
            b1 = b
        if c[i] == 3:
            b1 = (b - b1) - (b - a)
            a1 = a - b1
        if c[i] == 4:
            a1 = a 
            b1 = b - a
        if c[i] == 5:
            a1 = a - a
            b1 = b
        if c[i] == 6:
            a1 = a1
            b1 = b - b
 
else: print('Введённое значение некорректно'), sys.exit()
 
print(a1,b1)
also1
Пункт 3: как можно перелить из b в а, если согласно пункта 1, сосуд а заполнен до краев??
Тоже и с пунктом 4
PEHDOM
longdarknes
Написал код,но для 3 пункт алгоритма у меня не получается составить формулу. Заранее спасибо.
вы и первых два не сделали. У вас “исполнитель водолей” должен уметь:
1 - наполнить до краёв сосуд объемом a литров;
2 - наполнить до краёв сосуд объемом b литров;
3 - перелить воду из сосуда объемом b в сосуд объемом a литров;
4 - перелить воду из сосуда объемом a в сосуд объемом b литров;
5 - опорожнить сосуд объемом a литров;
6 - опорожнить сосуд объемом b литров.
следовательно сначала вы должны гдето хранить обьемы:
 c = list(map(int,input("")))
a_max = a  # объем сосуда а
a_cur = 0      # сколько воды сейчас в сосуде
b_max = a   # объем сосуда b
b_cur= 0      # сколько воды сейчас в сосуде
потом “1 наполнить до краёв сосуд объемом a литров;(из крана)” должно выглядеть вот так:
         if c[i] == 1:
            a_cur = a_max
“5 - опорожнить сосуд объемом a литров;”:
         
        if c[i] == 5:
            a_cur = 0

“4 - перелить воду из сосуда объемом a в сосуд объемом b литров;”
         if c[i] == 4:
            if a_cur <= (b_max - b_cur): #есди в а меньше или равно чем влезет в b
                a_cur = 0
                b_cur = b_cur + a_cur
            else:  # если в а больше чем влезет в b
                a_cur = a_cur - (b_max - b_cur)
                b_cur = b_max
для b по аналогии

а
if c < [7,8,9]:
вообще феерично, так списки не сравнивают.


also1
Пункт 3: как можно перелить из b в а, если согласно пункта 1, сосуд а заполнен до краев??Тоже и с пунктом 4
это не последовательность,действий, это комманды котороые может выполнять “исполнитель”
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB