Pagini recente » Cod sursa (job #2569820) | Cod sursa (job #2806428) | Cod sursa (job #1824391) | Cod sursa (job #2830371) | Cod sursa (job #2926233)
#include<fstream>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<climits>
#include<iomanip>
#define INF 100000
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
//ifstream f("in.in");
//ofstream g("out.out");
int expresie();
int factor();
int termen();
int numar();
char s[100005];
int poz = 0;
int deep = -1;
int main(){
f>>s;
g<<expresie();
f.close();
g.close();
return 0;
}
int expresie(){
/*deep++;
for(int i=1;i<=deep;i++){
cout<<" ";
}
cout<<"expresie: "<<poz<<'\n';*/
int a = termen();
int b;
while(s[poz] == '+' || s[poz] == '-'){
if(s[poz] == '+'){
poz++;
b = termen();
a = a+b;
}else if(s[poz] == '-'){
poz++;
b = termen();
a = a-b;
}
}
//deep--;
return a;
}
int termen(){
/*deep++;
for(int i=1;i<=deep;i++){
cout<<" ";
}
cout<<"termen: "<<poz<<'\n';*/
int a = factor();
int b;
while(s[poz] == '*' || s[poz] == '/'){
if(s[poz] == '*'){
poz++;
b = factor();
a = a*b;
}else if(s[poz] == '/'){
poz++;
b = factor();
a = a/b;
}
}
//deep--;
return a;
}
int factor(){
/*deep++;
for(int i=1;i<=deep;i++){
cout<<" ";
}
cout<<"factor: "<<poz<<'\n';*/
int a;
if(s[poz] == '('){
poz++;
a = expresie();
poz++;
}else{
a = 0;
while('0'<=s[poz] && s[poz]<='9'){
a = a*10 + (s[poz]-'0');
poz++;
}
}
//deep--;
return a;
}