Pagini recente » Cod sursa (job #2746423) | Cod sursa (job #2623266) | Cod sursa (job #558106) | Cod sursa (job #522953) | Cod sursa (job #2205661)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("evaluare.in");
ofstream fout ("evaluare.out");
int poz;
string s;
int expresie();
int numar () {
int nr = 0;
while (isdigit(s[poz])) {
nr = nr * 10 + s[poz] - '0';
poz++;
}
return nr;
}
int factor(){
int nr;
if (s[poz] == '(') {
poz++;
nr = expresie();
poz++;
}
else
nr = numar();
return nr;
}
int termen () {
int nr = factor();
while (s[poz] == '*' || s[poz] == '/') {
poz++;
if (s[poz - 1] == '*')
nr = nr * factor();
if (s[poz - 1] == '/')
nr = nr / factor();
}
return nr;
}
int expresie (){
int nr = termen();
while (s[poz] == '+' || s[poz] == '-') {
poz++;
if (s[poz - 1] == '+')
nr = nr + termen();
else
nr = nr - termen();
}
return nr;
}
int main()
{
fin >> s;
fout << expresie();
return 0;
}