Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <string.h>
- using namespace std;
- ifstream f ("date.in");
- int main()
- {
- int k=0,stiv[100];
- char cif[11]="0123456789",ch;
- //vom citi din fisierul f, caracter cu caracter, expresia RPN
- while (f>>ch)
- {
- //daca variabila ch retine o cifra, o vom converti la int si o vom adauga in stiva stiv
- if (strchr(cif,ch)!=0)
- stiv[++k]=ch-'0';
- //daca variabila ch retine simbolul operatiei pe biti ~, vom aplica operatia ~ elemntului aflat pe pozitia k in stiva stiv
- else if (ch=='~')
- stiv[k]=~stiv[k];
- else
- {
- //daca variabila ch retine simbolul operatiei {-,+,*,/}, vom aplica operatia respectiva elemntelor aflate pe pozitia k-1 si k in stiva stiv
- //rezultatul se va retine in stiv[k-1] si numarul elementelor din stiva va scadea cu o unitate
- if (ch=='-')
- {
- stiv[k-1]=stiv[k-1]-stiv[k];
- k--;
- }
- else if (ch=='+')
- {
- stiv[k-1]=stiv[k-1]+stiv[k];
- k--;
- }
- else if (ch=='*')
- {
- stiv[k-1]=stiv[k-1]*stiv[k];
- k--;
- }
- else if (ch=='/')
- {
- stiv[k-1]=stiv[k-1]/stiv[k];
- k--;
- }
- }
- }
- //stiv[1] reprezinta valoarea expresiei RPN
- cout<<stiv[1]<<" ";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement