Pagini recente » Cod sursa (job #201107) | Cod sursa (job #273842) | Cod sursa (job #740318) | Cod sursa (job #645468) | Cod sursa (job #2148941)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int n,p;
char v[100002];
int suma();
int produs();
void citeste(){
while(!fin.eof()){
fin>>v[n];
n++;
}
}
int getnr(){
int a=0;
while(p<n&&v[p]-'0'>=0&&v[p]-'0'<=9){
a=a*10+(v[p]-'0');
p++;
}
p--;
return a;
}
int produs(){
int t=1;
char o='*';
while(p<n&&v[p]!=')'&&v[p]!='+'&&v[p]!='-'){
if(v[p]=='*'||v[p]=='/'){
o=v[p];
p++;
}
if(o=='/'){
if(v[p]=='('){
p++;
t/=suma();
p++;
}
else{
t/=getnr();
}
}
if(o=='*'){
if(v[p]=='('){
p++;
t*=suma();
p++;
}
else{
t*=getnr();
}
}
p++;
}
return t;
}
int suma(){
int s=0;
char o='+';
while(v[p]!=')'&&p<n){
if(v[p]=='+'||v[p]=='-'){
o=v[p];
p++;
}
if(o=='-'){
s-=produs();
}
if(o=='+'){
s+=produs();
}
}
return s;
}
int main()
{
citeste();
fout<<suma();
return 0;
}