Cod sursa(job #2140278)

Utilizator herbertoHerbert Mohanu herberto Data 23 februarie 2018 10:12:43
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include<stdio.h>
using namespace std;
const int N=100001;


char s[N];
int p;
int expreise();
int termen();
int factor();

int expresie(){
  int sum=termen();
  while(s[p]=='+' || s[p]=='-'){
    if(s[p]=='+'){
      p++;
      sum+=termen();
    }
    else{
      p++;
      sum-=termen();
    }
  }
  return sum;
}

int termen(){
  int prod=factor();
  while(s[p]=='*' || s[p]=='/'){
    if(s[p]=='*'){
      p++;
      prod*=factor();
    }
    else{
      p++;
      prod/=factor();
    }
  }
  return prod;
}
int factor(){
  int semn=1, val=0;
  while(s[p]=='-'){
    p++;
    semn=-semn;
  }
  if(s[p]=='('){
    p++;
    val=expresie();
    p++;
    return semn*val;
  }
  while(s[p]>='0' && s[p]<='9'){
    val=val*10+(s[p]-'0');
    p++;
  }
  return semn*val;
}

int main(){
  FILE*fin=fopen("evaluare.in", "r");
  FILE*fout=fopen("evaluare.out", "w");
  int n;
  fscanf(fin, "%s", s);
  p=0;
  fprintf(fout, "%d", expresie());
  return 0;
}