Cod sursa(job #2715942)

Utilizator MateGMGozner Mate MateGM Data 4 martie 2021 13:30:00
Problema Evaluarea unei expresii Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.32 kb
#include <fstream>
#include <iostream>
#include <cstring>
using namespace std;


#define nmax 100001
char s[nmax];
char *kovetkezo=s;

int kier();
int tenyezo();
int szorzat();




int main()
{
    ifstream be("evaluare.in");
    ofstream ki("evaluare.out");
    be>>s;
    ki<<kier();
    return 0;
}

int kier()
{
    int x=szorzat();
    while(*kovetkezo=='+' || *kovetkezo=='-')
    {
        if(*kovetkezo=='+')
        {
            ++kovetkezo;
            x+=szorzat();
            break;

        }
        if(*kovetkezo=='-')
        {
            ++kovetkezo;
            x-=szorzat();
            break;
        }
    }
    return x;
}

int szorzat()
{
    int x=tenyezo();
    while(*kovetkezo=='*' || *kovetkezo=='/')
    {
        if(*kovetkezo=='*')
        {
            ++kovetkezo;
            x*=tenyezo();
            break;
        }
        if(*kovetkezo=='/')
        {
            ++kovetkezo;
            x/=tenyezo();
            break;
        }
    }
    return x;
}

int tenyezo()
{
    int x=0;
    if(*kovetkezo=='(')
    {
        ++kovetkezo;
        x=kier();
        ++kovetkezo;
    }
    else{
        while(isdigit(*kovetkezo)){
            x=x*10+*kovetkezo-'0';
            kovetkezo++;
        }
    }
    return x;
}