Pagini recente » Cod sursa (job #3282687) | Cod sursa (job #1224825) | Cod sursa (job #2877123) | Cod sursa (job #2171479) | Cod sursa (job #3292852)
#include <iostream>
#include <bits/stdc++.h>
#define VMAX 100002
using namespace std;
ifstream fin ("evaluare.in");
ofstream fout ("evaluare.out");
char s[VMAX];
int grd1(int &);
int grd2(int &);
int calc_nr(int &);
int calc_nr(int & poz)
{
if(s[poz]=='(')
{
poz++;
return grd1(poz);
}
int nr=0;
while('0'<=s[poz] && s[poz]<='9')
nr=nr*10+s[poz++]-'0';
return nr;
}
int grd2(int & poz)
{
int rasp = calc_nr(poz);
bool op;
int rsp2;
while(s[poz]=='*' || s[poz]=='/')
{
if(s[poz]=='*')
op=1;
else
op=0;
poz++;
rsp2 = calc_nr(poz);
if(op==1)
rasp*=rsp2;
else
rasp/=rsp2;
rsp2=0;
}
return rasp;
}
int grd1(int & poz)
{
int rasp = grd2(poz);
bool op;
int rsp2;
while(s[poz]=='+' || s[poz]=='-')
{
if(s[poz]=='+')
op=1;
else
op=0;
poz++;
rsp2 = grd2(poz);
if(op==1)
rasp+=rsp2;
else
rasp-=rsp2;
rsp2=0;
}
if(s[poz]==')')
poz++;
return rasp;
}
int main()
{
int n,m,i,j,k,t,q,nr,minim,maxim;
fin>>s;
nr=0;
fout<<grd1(nr)<<'\n';
return 0;
}