Pagini recente » Monitorul de evaluare | Istoria paginii utilizator/sounnnd | Atasamentele paginii Clasament oji_2005_10 | Istoria paginii utilizator/sounnnd | Cod sursa (job #1876261)
#include <bits/stdc++.h>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char E[100010],*p;
int S(),P(),F();
int main()
{
f>>E;
p=E;
g<<S();
return 0;
}
int S()
{
//calculeaza o suma de termeni (Produse)
int r=P();
while(*p=='+'||*p=='-')
{
if(*p=='+'){p++;r+=P();}
else {p++;r-=P();}
}
return r;
}
int P()
{
//calculeaza un produs de factori (Paranteze sau numere)
int r=F();
while(*p=='*'||*p=='/')
{
if(*p=='*'){p++;r*=F();}
else {p++;r/=F();}
}
return r;
}
int F()
{
//Obs Paranteze=Bracket
//Calculeaza un factor al unui produs
//Factor = ( Suma ) sau
//Factor = numar
int r;
if(*p=='(')
{
p++;r=S();p++;
}
else
{
r=0;
while(isdigit(*p))//*p>='0'&&*p<='9'
{
r=10*r+*p-'0';
p++;
}
}
return r;
}