Вопрос:

Постфиксное выражение?

math expression

2908 просмотра

2 ответа

6 Репутация автора

У меня есть вопрос, который спрашивает "Каково значение выражения постфикса 6 3 2 4 + - *?"

Варианты:

А. Что-то между -15 и -100

B. Что-то между -5 и -15

C. что-то между 5 и -5

D. Что-то между 5 и 15

E. что-то между 15 и 100


По моим расчетам, я продолжаю получать 18 в качестве ответа, который будет E, но ответ А.

Я что-то пропустил?

Автор: John Источник Размещён: 16.10.2014 04:57

Ответы (2)


1 плюс

1817 Репутация автора

Вам не хватает порядка операндов для оператора "-". В инфиксной нотации это оценивается как 6*(3-(4+2)) = -18.

Автор: RishiG Размещён: 16.10.2014 05:09

0 плюса

3 Репутация автора

Давайте используем стек для вычисления выражения 6 3 2 4 + - * Затем, перемещаясь слева направо один за другим, если мы получим операнд, нам нужно поместить его в стек, а если мы получим оператор, тогда нам нужно pop ( ); два раза и присваиваем первый вытесненный элемент переменной op2, а второй выталкиваемый элемент - переменной op1, затем выполняем операцию, которую мы получаем при перемещении, как op1 * op2 затем push (); результат снова помещается в стек, этот процесс продолжается до последнего элемента выражения. Итак, давайте реализуем метод стека для выражения.

1) теперь перемещайтесь слева направо в выражении, пока мы не получим оператор, и при получении операнда поместим его в стек, поэтому при перемещении до '4' стек будет выглядеть как 6 3 2 4 + - *

                                {  4  }
                      {  2  }   {  2  }
 {     }   {  3  }    {  3  }   {  3  }
 {  6  }   {  6  }    {  6  }   {  6  }
 Stack.    Stack      Stack     Stack 

2) 6 3 2 4 + - *

Here we get an operator '+' so ,

 op2 = pop(); // op2=4
 op1 = pop(); // op1=2
 result = op1 + op2 ; // result =6
 push(result);

So new stack will be like 

{  6  }
{  3  }
{  6  }
Stack

3) 6 3 2 4 + - *

Here again  we get an operator '-' so ,

op2 = pop(); // op2=6
op1 = pop(); // op1=3
result = op1 - op2 ; // result =-3
push(result);

So, new stack will be like 

{ - 3 }
{  6  }
Stack

4) 6 3 2 4 + - *

Here again  we get an operator '*' so ,

op2 = pop(); // op2=-3
op1 = pop(); // op1=6
result = op1 - op2 ; // result =-18
push(result);

So, new stack will be like 

{ -18 }
Stack

5) итак, окончательный ответ будет -18

Автор: Aman kayare Размещён: 13.06.2019 08:36
Вопросы из категории :
32x32