Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/49: Рейтинг темы: голосов - 49, средняя оценка - 4.65
Now I Matrix
137 / 134 / 28
Регистрация: 01.03.2010
Сообщений: 223
1

польская инверсная запись. Помогите с алгоритмом.

28.11.2007, 18:30. Показов 8905. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не знаю как организовать алгоритм польской инверсной записи на С++. Если кто-то знает помогите пожалуйста.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.11.2007, 18:30
Ответы с готовыми решениями:

Польская инверсная запись числа С++
Подскажите, пожалуйста,что это такое-Польская инверсная запись)

Программа построения ПОЛИЗ(польская инверсная запись)
Здравствуйте, ув. программисты, помогите написать программу построения польской имперсной записи....

Польская инверсная нотация
помогите пожалуста зделать !!! уже ниделю сижу никак не могу зделать ((

люди добрые! нужно программа инверсная запись чисел, запись из инверсной в обычную
помогите сделать программа или датьсходник, можно на с++ или на паскале спасибо вам за раннее...

1
Администратор
83618 / 52196 / 244
Регистрация: 10.04.2006
Сообщений: 13,426
28.11.2007, 18:39 2
Пример:
Одной из форм представления выражений является польская инверсная запись, задающая выражение так, что операции в нем записываются в порядке выполнения, а операнды находятся непосредственно перед операцией.

Например, выражение

(6+8)*5-6/2

в польской инверсной записи имеет вид

6 8 + 5 * 6 2 / -

Особенность такой записи состоит в том, что значение выражения можно вычислить за один просмотр записи слева направо, используя стек, который до этого должен быть пуст. Каждое новое число заносится в стек, а операции выполняются над верхними элементами стека, заменяя эти элементы результатом операции. Для приведенного выражения динамика изменения стека будет иметь вид

S = < >; <6>; <6,8>; <14>; <14,5>; <70>;
<70,6>; <70,6,2>; <70,3>; <67>.

Ниже приведена функция eval, которая вычисляет значение выражения, заданного в массиве m в форме польской инверсной записи, причем m[i]>0 означает неотрицательное число, а значения m[i]<0 - операции. В качестве кодировки операций сложения, вычитания, умножения и деления выбраны отрицательные числа -1, -2, -3, -4. Для организации последовательного хранения стека используется внутренний массив stack. Параметрами функции являются входной массив a и его длина l.

Код
    float eval (float *m, int l)
    { int p,n,i;
      float stack[50],c;
       for(i=0; i < l ;i++)
       if ((n=m[i])<0)
         {  c=st[p--];
            switch(n)
            { case -1:  stack[p]+=c;  break;
              case -2:  stack[p]-=c;  break;
              case -3:  stack[p]*=c;  break;
              case -4:  stack[p]/=c;
            }
         }
       else stack[++p]=n;
       return(stack[p]);
    }
0
28.11.2007, 18:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.11.2007, 18:39
Помогаю со студенческими работами здесь

Польская запись
Здравствуйте, у меня возникли некоторые проблемы с данной задачей(если сказать точнее, то я ее...

польская запись
как написать программу,которая математическое выражение переводит из обычного запися в польскую...

Обратная польская запись
Написать программу формирования ОПЗ и расчета полученного вы-ражения. Разработать удобный интерфейс...

Обратная польская запись
Нужна помощь. Есть программа с общей польской записью. Программа принимает только буквенное...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru