Cod sursa(job #2663442)

Utilizator martinmiere133Cranga Antonio martinmiere133 Data 26 octombrie 2020 13:32:29
Problema Evaluarea unei expresii Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.3 kb
#include <iostream>
#include <math.h>
#include <vector>
#include <queue>
#include <stack>
#include <list>
#include <iomanip>
#include <stdlib.h>
#include <fstream>
#include <algorithm>
#include <string>
#include <set>
#include <cstring>
#define INF 1e9
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char s[100010] ,  *p = s;

long termen();
long factor();

long eval()
{
    long r = termen();
    while(*p == '+'|| *p == '-')
    {
        switch (*p) {
            case '+':
                ++p;
                r+=termen();
                break;
            case '-':
                ++p;
                r+=termen();
                break;
        }
    }
    return r;
}
long termen()
{
    long r = factor();
    while(*p == '*'|| *p == '/')
    {
        switch (*p) {
            case '*':
                ++p;
                r*=factor();
                break;
            case '/':
                ++p;
                r/=factor();
                break;
        }
    }
    return r;
}
long factor()
{
    long r =0 ;
    if(*p == '(')
    {
        ++p;
        r = eval();
        ++p;
    }
    else
    {
        while(*p >='0'&& *p<='9')
        {
            r=r*10 + *p-'0';
            ++p;
        }
    }
    return r;
}
int main()
{
    f>>s;
    g<<eval();
    return 0;
}