Ответы на вопрос:
===== PascalABC.NET =====
begin
SeqGen(ReadInteger('N ='), n -> n * n, 1).Sum.Print
end.
Постфиксная (она же - обратная польская запись, польская - потому что введена польским яном лукашевичем) - это запись, в которой сначала следуют операнды, а затем знаки операций. удобна для организации вычислений, потому что не требует для записи скобок и может вычисляться по мере считывания. для преобразования обычной записи в польскую удобно использовать логическую структуру, называемую стеком (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
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
mashenka20420.10.2022 07:05
-
nikzarubenko12.05.2023 00:02
-
petrovakat200319.03.2020 15:47
-
Dan1L1an06.07.2020 13:37
-
ирбиз24.05.2022 14:03
-
Miniplayer13.09.2022 20:02
-
Ru582919.03.2022 16:32
-
hanabi7suzuha14.03.2023 06:08
-
Liliya052928.01.2023 08:05
-
Tara880826.01.2021 22:22
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.