Pagini recente » Cod sursa (job #418629) | Cod sursa (job #1675545) | Cod sursa (job #1867141) | Cod sursa (job #1090552) | Cod sursa (job #3204674)
#include <fstream>
#include <string>
using namespace std;
unsigned int poz;
string s;
int adunare();
int factor(){
if(s[poz] == '('){
int val;
poz++;
val = adunare();
poz++;
return val;
}
else{
int nr = 0;
while(poz < s.size() && s[poz] >= '0' && s[poz] <= '9'){
nr = nr * 10 + (s[poz] - '0');
poz++;
}
return nr;
}
}
int inmultire(){
int val = factor();
while(poz < s.size() && (s[poz] == '*' || s[poz] == '/')){
poz++;
if(s[poz - 1] == '*'){
val *= factor();
}
else{
val /= factor();
}
}
return val;
}
int adunare(){
int val = inmultire();
while(poz < s.size() && (s[poz] == '+' || s[poz] == '-')){
poz++;
if(s[poz - 1] == '+'){
val += inmultire();
}
else{
val -= inmultire();
}
}
return val;
}
int main(){
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
fin >> s;
poz = 0;
fout << adunare();
return 0;
}