Есть ответ 👍

Прошу вопросы и : 1. какие операции можно производить над строковыми величинами? 2.объясните механизм работы известных вам операций над строковыми величинами. подтвердите примерами. 3.всегда ли выполним операция частичной замены слова в алгоритме? 4.изменится ли результат выполнения алгоритма, если при соединении двух слов применить переместительный закон?

231
494
Посмотреть ответы 1

Ответы на вопрос:

kotяplay12
4,4(21 оценок)

Постфиксная (она же - обратная польская запись, польская - потому что введена польским яном лукашевичем) - это запись, в которой сначала следуют операнды, а затем знаки операций. удобна для организации вычислений, потому что не требует для записи скобок и может вычисляться по мере считывания. для преобразования обычной записи в польскую удобно использовать логическую структуру, называемую стеком (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 умножить, из запомненного вычесть. все верно.

Популярно: Информатика