Pagini recente » Cod sursa (job #463792) | Cod sursa (job #2141726) | Cod sursa (job #1879766) | Cod sursa (job #3293334) | Cod sursa (job #1729228)
#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;
char a[100000];
int lung;
int i;
long eval();
long evaluarefact();
long evaluareexpr();
long evaluareterm();
long eval()
{long z=0;
while(a[i]>='0'&&a[i]<='9'&&i<lung)
{
z=z*10+(a[i]-48);
i++;
}
i--;
return z;
}
long evaluarefact()
{long f;
if(a[i]=='(')
{
i++;
f=evaluareexpr();
i++;
}
else
{
f=eval();
i++;
}
return f;
}
long evaluareterm()
{
long z=evaluarefact();
while(i<lung&&(a[i]=='*'||a[i]=='/'))
{
if(a[i]=='*')
{
i++;
z=z*evaluarefact();
}
else
{
i++;
z=z/evaluarefact();
}
}
return z;
}
long evaluareexpr()
{
long z=evaluareterm();
while(i<lung&&(a[i]=='+'||a[i]=='-'))
{
if(a[i]=='+')
{i++;
z=z+evaluareterm();}
else
{
i++;
z=z-evaluareterm();
}
}
return z;
}
int main()
{
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char c;
while(f>>c)
{
a[i]=c;
i++;
}
lung=strlen(a);
i=0;
g<<evaluareexpr();
}