Pagini recente » Cod sursa (job #2041571) | Cod sursa (job #1008198) | Cod sursa (job #1459737) | Cod sursa (job #225623) | Cod sursa (job #1510816)
#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
char s[100001];
int ind=0;
int eval();
int eval2();
int eval3();
int eval(){
int r=0, nr;
if(s[ind]=='('){
++ind;
r=eval3();
if(ind<strlen(s) && s[ind]==')')
++ind;
}
nr=0;
while(ind<strlen(s) && s[ind]>='0' && s[ind]<='9'){
nr=nr*10+(s[ind]-'0');
++ind;
}
//while(ind<strlen(s) && s[ind]==')')
//++ind;
return r+nr;
}
int eval2(){
int r=eval();
while(s[ind]=='*' || s[ind]=='/'){
if(s[ind]=='*'){
++ind;
r=r*eval();
}
else{
++ind;
r=r/eval();
}
}
return r;
}
int eval3(){
int r=eval2();
while(s[ind]=='+' || s[ind]=='-'){
if(s[ind]=='+'){
++ind;
r=r+eval2();
}
else{
++ind;
r=r-eval2();
}
}
return r;
}
int main()
{
FILE *fin=fopen("evaluare.in", "r");
FILE *fout=fopen("evaluare.out", "w");
int rez=0;
fgets(s, 100000, fin);
if(s[strlen(s)-1]=='\n')
s[strlen(s)-1]='\0';
while(ind<strlen(s))
rez=rez+eval3();
fprintf(fout, "%d", rez);
return 0;
}