Pagini recente » Cod sursa (job #130043) | Cod sursa (job #931180) | Cod sursa (job #640869) | Cod sursa (job #1445624) | Cod sursa (job #1156931)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char S[100005], *p = S;
void read()
{
fin.getline(S,100005);
}
int calc1();
int getnr()
{
int r = 0;
if ( *p == '(' )
{//We got and expresion
p += 1; // Skip the '('
r = calc1();
p += 1; // Skip the ')'
}
else
{
while ( *p>='0' && *p<='9' )
{//We got a number over there!
r = r*10 + *p - '0';
p += 1;
}
}
return r;
}
int calc2()
{
int r = getnr();
while ( *p=='*' || *p=='/' )
{
switch ( *p )
{
case '*':
p += 1;
r *= getnr();
break;
case '/':
p += 1;
r /= getnr();
break;
}
}
return r;
}
int calc1()
{
int r = calc2();
while ( *p=='+' || *p=='-' )
{
switch ( *p )
{
case '+':
p += 1;
r += calc2();
break;
case '-':
p += 1;
r -= calc2();
break;
}
}
return r;
}
int main()
{
read();
fout << calc1();
return 0;
}