Cod sursa(job #2026807)

Utilizator amza23Amza A amza23 Data 25 septembrie 2017 08:33:26
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("evaluare.in");
ofstream g ("evaluare.out");
char s[100001],*p=s;
int evaluare();
int termen();
int numar();
int evaluare()
{
    int r=termen();
    while(*p=='+' or *p=='-')
    {
        if(*p=='+') {*p++;
                     r=r+termen();
                    }
               else {*p++;
                     r=r-termen();
                    }

    }
        return r;
}
int termen()
{
    int r=numar();
    while(*p=='*' or *p=='/')
    {
        if(*p=='*') {*p++;
                    r=r*numar();
                    }
               else{*p++;
                    r=r/numar();
                    }
    }
    return r;
}
int numar()
{
    int r=0;
    if(*p>='0' && *p<='9')
        while(*p>='0' && *p<='9')
            {
                r=r*10+*p-48;
                *p++;
            }
    else if(*p=='(')
    {
        *p++;
        r=evaluare();
        *p++;
    }
    return r;
}
int main()
{
    f.getline(s,100001);
    g<<evaluare();
    return 0;
}