Cod sursa(job #207125)

Utilizator nicolaetitus12Nicolae Titus nicolaetitus12 Data 11 septembrie 2008 20:28:10
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <cstdio>
#define N 100001
char sir[N],*p;
long produs();
long termen();

long suma()
{long s=produs();
 while(*p=='+'||*p=='-')
 {if(*p=='+')
  {p++;
   s+=produs();}
  else if(*p=='-')
  {p++;
   s-=produs();
  }
 }
return s;
}

long produs()
{long s=termen();
 while(*p=='*'||*p=='/')
 {if(*p=='*')
  {p++;  
   s*=termen();
  }
  else if(*p=='/')
  {p++;
   s/=termen();
  }
 }
return s;
}

long termen()
{long s=0;
 if(*p=='(')
 {p++;
  s=suma();
  p++;
  return s;
 }
 while(*p>='0'&&*p<='9')
 {s=s*10+*p-48;
  p++;
 } 
 return s;
}

int main ()
{FILE *fin=fopen("eval.in","r");
 FILE *fout=fopen("eval.out","w");
 fgets(sir,N,fin);
 p=sir;
 fprintf(fout,"%ld",suma());
 fclose (fout);
 return 0;
}