C език за пример

Материал от Wikibooks.

  1. Компилиране на програми
  2. Най-простата програма "Hello World"
  3. Учим се да добавяме
  4. Максимум
  5. Таблица за умножение
  6. ASCII кодове на символи
  7. Главна буква
  8. Скоби
  9. Факториал
  10. Степен на
  11. Триъгълник на Паскал
  12. Корен на уравнението
  13. Нотация
  14. Сортиране
  15. Сложна библиотека
  16. Сортиране въз основа на Qsort
  17. RPN калкулатор
  18. RPN калкулатор на Bison
  19. Проста граматика
  20. Задача "Изчисляване на съпротивлението на веригата"
  21. Проста реализация на държавна машина
  22. Използване на аргументи от командния ред
  23. Четене и печат без използване на stdio

Съдържание

[редактиране] Какво представлява обратната полска нотация?

Помислете за обозначението на аритметичните изрази, в които първо следват двата операнда на аритметичната операция, а след това и знака на операцията. Например:

Тази нотация за писане на изрази се нарича Reverse Polish Notation (RPN). В теорията на езика за програмиране тази нотация се нарича постфикс нотация. Обичайната нотация се нарича алгебрична или инфикс нотация ("In" от английски. вътре, т.е. между операндите). Има и нотация на префикс, която се използва активно в езика C (първо името на функцията и след това нейните аргументи), както и в езика LISP.

Имайте предвид, че скобите не се изискват в обратната полска нотация. По-специално, ако във втория пример пропуснем скобите, изразът все пак ще бъде интерпретиран еднозначно.

Преводачът на RPN израз е базиран на стека. Всяко следващо число се поставя върху стека. Ако се срещне знак за операция (означете го със *), тогава от стека се изскачат две числа (a = pop (), b = pop ()), стойността на съответната двоична аритметична операция се изчислява за тях и резултатът се избутва върху стека (натиснете (a * b)).

Задача: Напишете програма за калкулатор за аритметични изрази, написани в обратната полска нотация.