Pagini recente » Cod sursa (job #178555) | Cod sursa (job #1231033) | Cod sursa (job #1836752) | Cod sursa (job #1025986) | Cod sursa (job #708604)
Cod sursa(job #708604)
#include<fstream>
#include<cstring>
using namespace std;
char exp[100001];
int k=0;
int fact(),term();
ifstream f("evaluare.in");
ofstream g("evaluare.out");
int expa()
{
int suma=term();
while(exp[k]=='+' || exp[k]=='-')
{
k++;
if(exp[k-1]=='+')
suma+=term();
else suma-=term();
}
return suma;
}
int term()
{
int suma=fact();
while(exp[k]=='*' || exp[k]=='/')
{
k++;
if(exp[k-1]=='*')
suma*=fact();
else suma/=fact();
}
return suma;
}
int fact()
{
int suma=0;
if(exp[k]=='(')
{
k++;
suma=expa();
k++;
}
else
{
while(exp[k]>='0' && exp[k]<='9')
{
suma=suma*10+(exp[k]-'0');
k++;
}
}
return suma;
}
int main()
{
f>>exp;
g<<expa();
f.close();
g.close();
return 0;
}