Pagini recente » Cod sursa (job #2127996) | Cod sursa (job #2913275) | Cod sursa (job #2146021) | Cod sursa (job #2059496) | Cod sursa (job #1891382)
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
#define lim 100010
char ini[lim];
int k;
int termen();
int factor();
int eval()
{
int r=termen();
while(ini[k]=='+' || ini[k]=='-')
{
if(ini[k]=='+')
k++, r=r+termen();
if(ini[k]=='-')
k++, r=r-termen();
}
return r;
}
int termen()
{
int r=factor();
while(ini[k]=='/' || ini[k]=='*')
{
if(ini[k]=='/')
k++, r/=factor();
if(ini[k]=='*')
k++, r*=factor();
}
return r;
}
int factor()
{
int r=0;
if(ini[k]=='(')
k++, r=eval(), k++;
while(ini[k]>='0' && ini[k]<='9')
r=r*10+ini[k]-'0', k++;
return r;
}
int main()
{
fin>>ini;
fout<<eval();
fin.close();
fout.close();
return 0;
}