Cod sursa(job #3208713)

Utilizator BRobertMBaciu Robert BRobertM Data 29 februarie 2024 14:09:22
Problema Evaluarea unei expresii Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char s[1001],*p;
int eval();
int termen();
int factor();

int eval()
{
   int rez=termen();
   while(*p=='+'||*p=='-')
      if(*p=='+')
      {
         p++;
         rez+=termen();
      }
      else
      {
         p++;
         rez-=termen();
      }
   return rez;
}

int termen()
{
   int rez=factor();
   while(*p=='*'||*p=='/')
      if(*p=='*')
      {
         p++;
         rez*=factor();
      }
      else
      {
         p++;
         rez/=factor();
      }
   return rez;
}

int factor()
{
   int rez=0;
   if(*p=='(')
   {
      p++;
      rez=eval();
      p++;
   }
   else while(*p>='0'&&*p<='9')
      {
         rez=rez*10+*p-'0';
         p++;
      }
   return rez;
}

int main()
{
    f.getline(s,1001);
    p=s;
    cout<<eval();
    return 0;
}