Pagini recente » Cod sursa (job #2653113) | Cod sursa (job #1421519) | Cod sursa (job #2713479) | Cod sursa (job #1399105) | Cod sursa (job #2663442)
#include <iostream>
#include <math.h>
#include <vector>
#include <queue>
#include <stack>
#include <list>
#include <iomanip>
#include <stdlib.h>
#include <fstream>
#include <algorithm>
#include <string>
#include <set>
#include <cstring>
#define INF 1e9
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char s[100010] , *p = s;
long termen();
long factor();
long eval()
{
long r = termen();
while(*p == '+'|| *p == '-')
{
switch (*p) {
case '+':
++p;
r+=termen();
break;
case '-':
++p;
r+=termen();
break;
}
}
return r;
}
long termen()
{
long r = factor();
while(*p == '*'|| *p == '/')
{
switch (*p) {
case '*':
++p;
r*=factor();
break;
case '/':
++p;
r/=factor();
break;
}
}
return r;
}
long factor()
{
long r =0 ;
if(*p == '(')
{
++p;
r = eval();
++p;
}
else
{
while(*p >='0'&& *p<='9')
{
r=r*10 + *p-'0';
++p;
}
}
return r;
}
int main()
{
f>>s;
g<<eval();
return 0;
}