Pagini recente » Cod sursa (job #89095) | Cod sursa (job #220066) | Cod sursa (job #2332631) | Cod sursa (job #2494963) | Cod sursa (job #2223307)
#include <stdio.h>
#include <stdlib.h>
char v[100000];
int j;
int n;
int multiply();
int buildElement();
int evaluateExpression(){
int nr=multiply(),nr2;
while(j<n && (v[j]=='+' || v[j]=='-')){
if(v[j]=='+'){
j++;
nr2=multiply();
nr+=nr2;
}
else if(v[j]=='-'){
j++;
nr2=multiply();
nr-=nr2;
}
}
return nr;
}
int multiply(){
int nr=buildElement(),nr2;
while(v[j]=='*' || v[j]=='/'){
if(v[j]=='*'){
j++;
nr2=buildElement();
nr*=nr2;
}
else if(v[j]=='/'){
j++;
nr2=buildElement();
nr/=nr2;
}
}
return nr;
}
int buildElement(){
int nr=0;
if(v[j]=='('){
j++;
nr=evaluateExpression();
j++; /*trecem peste ")" */
}
else{
while(v[j]>='0' && v[j]<='9'){
nr=nr*10+v[j]-'0';
j++;
}
}
return nr;
}
int main()
{
FILE*fin,*fout;
fin = fopen("evaluare.in" ,"r");
fout = fopen("evaluare.out" ,"w");
char a;
int i=0;
a=fgetc(fin);
while(a!=EOF && a!='\n'){
v[i]=a;
i++;
a=fgetc(fin);
}
n=i;
fprintf(fout, "%d\n" ,evaluateExpression());
fclose(fin);
fclose(fout);
return 0;
}