Pagini recente » Cod sursa (job #1390252) | Cod sursa (job #2405719) | Cod sursa (job #1333738) | Cod sursa (job #2964429) | Cod sursa (job #484033)
Cod sursa(job #484033)
#include<fstream>
#include<stack>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char a[100001],*p=a;
int N,rez;
long termen(),factor();
int cif(char x)
{ return ( x>='0' && x<='9'); }
long number()
{ long r=0;
while(cif(*p)) r=r*10+*p-'0' , p++;
return r;
}
long evaluare()
{ long r=termen();
while(*p=='+' || *p=='-')
(*p=='+')?(p++ , r+=termen()):(p++ , r-=termen());
return r;
}
long termen()
{ long r=factor();
while(*p=='*' || *p=='/')
(*p=='*')?(p++ , r*=factor()):(p++ , r/=factor());
return r;
}
long factor()
{ long r=0;
if(*p=='(') p++ , r=evaluare() , p++;
else r=number();
return r;
}
int main()
{ int ax,i;
f>>a;
g<<evaluare();
f.close();
g.close();
return 0;
}