Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <cstring>
- using namespace std;
- char exp[201];
- int paranteze,valexp,calcexp[201],elc=1,nr;
- int main()
- {
- ifstream f("expresie10.in");
- f.getline(exp,201);
- f.close();
- calcexp[0]=-1;
- int i;
- for(i=0;exp[i];++i)
- if(paranteze>=0)
- {
- if(exp[i]=='[')
- {
- ++paranteze;
- calcexp[elc++]=-1;
- if(exp[i+1]==']') /// Daca parantezele nu contin un numar, iesim din for
- break;
- }
- else
- if(exp[i]==']')
- {
- --paranteze;
- valexp=0;
- while(calcexp[elc]!=-1)
- valexp+=calcexp[elc],calcexp[elc--]=0;
- calcexp[elc++]=valexp/2;
- }
- else /// Daca elementul este o cifra
- {
- if(exp[i-1]!='[') /// Daca numarul nu este precedat de paranteza deschisa
- break;
- nr=0;
- while(exp[i]>='0'&&exp[i]<='9') /// Calculez numarul
- nr=nr*10+exp[i++]-'0';
- if(exp[i--]!=']') /// Daca dupa numar nu urmeaza paranteza inchisa
- break;
- calcexp[elc]=nr;
- }
- }
- ofstream g("expresie10.out");
- if(paranteze==0&&!exp[i])
- {
- valexp=0;
- while(calcexp[elc]!=-1)
- valexp+=calcexp[elc--];
- g<<valexp;
- }
- else
- g<<"expresie gresita";
- g.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement