C език за пример
Материал от Wikibooks.
- Компилиране на програми
- Най-простата програма "Hello World"
- Учим се да добавяме
- Максимум
- Таблица за умножение
- ASCII кодове на символи
- Главна буква
- Скоби
- Факториал
- Степен на
- Триъгълник на Паскал
- Корен на уравнението
- Нотация
- Сортиране
- Сложна библиотека
- Сортиране въз основа на Qsort
- RPN калкулатор
- RPN калкулатор на Bison
- Проста граматика
- Задача "Изчисляване на съпротивлението на веригата"
- Проста реализация на държавна машина
- Използване на аргументи от командния ред
- Четене и печат без използване на stdio
Съдържание
[редактиране] Какво представлява обратната полска нотация?
Помислете за обозначението на аритметичните изрази, в които първо следват двата операнда на аритметичната операция, а след това и знака на операцията. Например:
Тази нотация за писане на изрази се нарича Reverse Polish Notation (RPN). В теорията на езика за програмиране тази нотация се нарича постфикс нотация. Обичайната нотация се нарича алгебрична или инфикс нотация ("In" от английски. вътре, т.е. между операндите). Има и нотация на префикс, която се използва активно в езика C (първо името на функцията и след това нейните аргументи), както и в езика LISP.
Имайте предвид, че скобите не се изискват в обратната полска нотация. По-специално, ако във втория пример пропуснем скобите, изразът все пак ще бъде интерпретиран еднозначно.
Преводачът на RPN израз е базиран на стека. Всяко следващо число се поставя върху стека. Ако се срещне знак за операция (означете го със *), тогава от стека се изскачат две числа (a = pop (), b = pop ()), стойността на съответната двоична аритметична операция се изчислява за тях и резултатът се избутва върху стека (натиснете (a * b)).
Задача: Напишете програма за калкулатор за аритметични изрази, написани в обратната полска нотация.