Cod sursa(job #1464410)

Utilizator StefanMudragMudrag Stefan StefanMudrag Data 23 iulie 2015 14:18:48
Problema Evaluarea unei expresii Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 kb
#include<stdio.h>
#define NMAX 10010

FILE *fin,*fout;

char s[NMAX];

long expresie();
long termen();
long facotr();
int i=0;
void read()
{
    fin=fopen("evaluare.in","r");
    fscanf(fin,"%s",s);
    fclose(fin);
}
long expresie()
{
    long x=termen();
    while(s[i]=='+'||s[i]=='-')
    {
        switch(s[i])
        {
        case '+':
            ++i;
            x+=termen();
            break;
        case '-':
            ++i;
            x-=termen();
        }
    }
    return x;
}
long termen()
{
    long x=facotr();
    while(s[i]=='*'||s[i]=='/')
    {
        switch(s[i])
        {
      case '*':
         ++i;
         x*=facotr();
         break;
      case '/':
        ++i;
        x/=facotr();
        break;
        }
    }
  return x;
}
long facotr()
{
    long x=0;
    if(s[i]=='(')
    {
        ++i;
        x=expresie();
        ++i;
    }
    else
        while(s[i]>='0'&&s[i]<='9')
         x=x*10+s[i]-'0',
         ++i;
   return x;
}
int main()
{
    read();
    long rez;
    rez=expresie();
    fout=fopen("evaluare.out","w");
    fprintf(fout,"%ld",rez);
    fclose(fout);
    return 0;
}