Информатика · ҰБТ сұрағы №16265
Стектік калькулятор кері поляк жазбасындағы өрнекті орындайды (токендер бос орынмен бөлінген): st = [] def run(src): for t in src.split(): if t.isdigit(): st.append(int(t)) elif t == "dup": st.append(st[-1]) elif t == "swap": st[-1], st[-2] = st[-2], st[-1] else: b = st.pop() a = st.pop() st.append(a + b if t == "+" else a - b if t == "-" else a * b) return st[-1] Әр сұрақ алдыңғы сұрақтарға тәуелсіз, st жаңадан [] болып басталады деп есептеңіз (бір сұрақ ішіндегі шақырулар st-ті ортақ пайдаланады).

run("5 2 *") орындалып, содан кейін print(run("3 +"), st) шақырылады. Нәтиже қандай?

Дұрыс жауабы мен түсіндірмесі
Жауабы: 13 [13]

st глобал: бірінші шақырудан кейін [10]. Екінші шақыру 3-ті қосып [10, 3], «+» оларды 13-ке біріктіреді: [13].

«Алгоритмдер және программалау» тақырыбынан тағы