Cod sursa(job #2777852)

Utilizator PetraPetra Hedesiu Petra Data 25 septembrie 2021 13:10:28
Problema Evaluarea unei expresii Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin ("evaluare.in");
ofstream fout ("evaluare.out");
char cc;
int citire_caracter ()
{
    if (fin>>cc)
        return 1;
    return 0;
}
int citire_numar ()
{
    int nr=0;
    while (cc>='0' && cc<='9')
    {
        nr=nr*10+cc-'0';
        if (citire_caracter()==0)
            break;
    }
    return nr;
}
int terms ();
int factors ()
{
    int nr;
    if (cc=='(')
    {
        citire_caracter();
        nr=terms();
        citire_caracter();
    }
    else
        nr=citire_numar();
    if (cc=='*')
    {
        citire_caracter();
        nr=nr*factors();
    }
    else if (cc=='/')
    {
        citire_caracter();
        nr=nr/factors();
    }
    return nr;
}
int terms ()
{
    int nr;
    nr=factors();
    if (cc=='+')
    {
        citire_caracter();
        nr=nr+terms();
    }
    else if (cc=='-')
    {
        citire_caracter();
        nr=nr-terms();
    }
    return nr;
}
int main()
{
    char n;
    int nr=0;
    fin >> cc;
    fout << terms();
    return 0;
}