Cod sursa(job #2682825)

Utilizator Edyci123Bicu Codrut Eduard Edyci123 Data 9 decembrie 2020 18:26:24
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("evaluare.in");
ofstream g("evaluare.out");

char s[100005], *p;

int termen();
int factor();
int ecuatie();

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 = ecuatie(),p++;
    else
    {
        while(isdigit(*p))
        {
            rez = rez * 10 + *p - '0';
            p++;
        }
    }

    return rez;
}

int ecuatie()
{
   int rez = termen();
   while(*p == '+' || *p == '-')
   {
       if(*p=='+')
        p++, rez += termen();
       else
        p++, rez -= termen();

   }
   return rez;
}
int main()
{
    f >> s;
    p = s;
    g << ecuatie();
}