Pagini recente » Cod sursa (job #1418533) | Cod sursa (job #1216789) | Cod sursa (job #2965124) | Cod sursa (job #1492282) | Cod sursa (job #3157418)
#include <iostream>
#include <fstream>
using namespace std;
#define MaxN 100000
char s[MaxN];
int sindex;
int adunare();
int factor()
{
int numar;
if(s[sindex]=='(')
{
sindex++;
numar=adunare();
sindex++;
}
else
{
numar=0;
while(s[sindex]>='0' && s[sindex]<='9')
{
numar=numar*10+(s[sindex]-'0');
sindex++;
}
}
return numar;
}
int inmultire()
{
int result;
result=factor();
while(s[sindex]=='*' || s[sindex]=='/')
{
if(s[sindex]=='*')
{
sindex++;
result*=factor();
}
else
{
sindex++;
result/=factor();
}
}
return result;
}
int adunare()
{
int result;
result=inmultire();
while(s[sindex]=='+' || s[sindex]=='-')
{
if(s[sindex]=='+')
{
sindex++;
result+=inmultire();
}
else
{
sindex++;
result-=inmultire();
}
}
return result;
}
int main()
{
ifstream in("evaluare.in");
ofstream out("evaluare.out");
int n, i;
n=0;
while(in>>s[n])
{
n++;
}
sindex=0;
out<<adunare();
return 0;
}