Cod sursa(job #2198184)

Utilizator alexmihai21Mihai Alexandru alexmihai21 Data 23 aprilie 2018 20:45:13
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 kb
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
#define maxl 100000
using namespace std;

ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
long termen();
long factor();
char a[maxl], *p;
long val()
{
    long r=termen();
    while(*p=='+' || *p=='-')
    {
        if(*p=='+')
        {
            p++;
            r+=termen();

        }
        else
        {
            p++;
            r-=termen();

        }

    }
    return r;


}
long termen()
{
    long r=factor();
    while(*p=='*' || *p=='/')
    {
        if(*p=='*')
        {
            p++;
            r+=factor();

        }
        else
        {
            p++;
            r-=factor();


        }

    }
    return r;




}
long factor()
{
    int r=0;
    if(*p=='(')
    {
        p++;
        r=val();
        p++;

    }
    else
    {
        while(*p<='9' && *p>='0')
        {
            r=r*10 + *p -'0';
            p++;
        }
    }

    return r;
}

int main () {
    fin.getline(a, maxl);
    p = a;
    fout << val();
    return 0;
}