Нужна ! ( или хотя бы объясните, как из обычной получить постфиксную форму. вот, , которые нужно переделать в постфиксной форме: 1. (a+b)*(c+2*d) 2.(2*a-3*d)*c+2*b 3.(a+b+2*c)*d 4. 3*a - (2*b+c) * d
165
419
Ответы на вопрос:
Постфиксная (она же - обратная польская запись, польская - потому что введена польским яном лукашевичем) - это запись, в которой сначала следуют операнды, а затем знаки операций. удобна для организации вычислений, потому что не требует для записи скобок и может вычисляться по мере считывания. для преобразования обычной записи в польскую удобно использовать логическую структуру, называемую стеком (stack). поскольку нам не надо составлять алгоритм, а только перевести привычную запись в постфиксную, при переводе будем просто рассуждать. 1. (a+b)*(c+2*d) первая операция - a+b. её постфиксная запись (далее - пз) выглядит как ab+ и понимается так: "взять а, взять b, сложить" следующая операция 2*d, в пз это 2d*. т.е по сути мы меняем местами знак операции и второй операнд. третья операция - вычисление c+2*d. в пз мы запишем (с учетом предыдущего) 2d*c+. у нас уже была операция 2d*, теперь мы прибавляем к результату c. содержимое обоих скобок вычислено, осталось выполнить умножение. получаем в пз: ab+2d*c+* как это будет вычисляться? считываем a. считываем b. считываем знак операции +. выполняем операцию, получая a+b. обозначим результат r и тогда текущее состояние вычисляемого выражения будет r2d*c+* считываем 2. считываем d. считываем знак операции * (заметим, что читать надо, пока не встретим знак операции). перемножаем два операнда, предшествующие операции. получаем s=2*d. текущее состояние вычисляемого выражения будет rsc+* считываем операнд с. считываем знак операции +. складываем два операнда, предшествующие операции. получаем s=s+c. почему не вводим новой переменной? потому что один из операндов - временная переменная, следовательно её прежнее значение не нужно. текущее состояние вычисляемого выражения будет rs* считываем знак операции *. перемножаем два операнда, предшествующие операции. получаем r=r*s. все выражение просмотрено, следовательно вычисление завершено. второй пример не будем столь подробно разбирать. 2. (2*a-3*d)*c+2*b тут операции в пз будут 2a*, 3d*, 2a*3d*- (первая скобка), далее 2a*3d*-с*, 2b* и окончательно 2a*3d*-c*2b*+ читаем: 2 и a умножить, 3 и d умножить, из первого произведения вычесть второе, результат и с умножить, 2 и b умножить и два последних результат сложить. все верно. 3. (a+b+2*c)*d ab+, 2c*, вся скобка ab+2c*+, окончательно ab+2c*+d* 4. 3*a-(2*b+c)*dв пз: 3a*2b*c+d*-проверим: 3 и a умножить, запомнить, 2 и b умножить, с прибавить, на d умножить, из запомненного вычесть. все верно.
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
Агент27104.04.2021 19:46
-
yanzabelina27.10.2021 00:55
-
Albina196713.09.2022 04:16
-
amir13929.06.2021 13:21
-
0динокийхомяк04.11.2021 18:23
-
helpmepleace225.04.2023 08:46
-
sveta45426.02.2020 12:04
-
Makc92019.11.2021 18:16
-
VadimShoppert19.07.2021 17:18
-
Dinastita07.09.2020 19:17
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.