Pagini recente » Cod sursa (job #2352528) | Cod sursa (job #1494795) | Cod sursa (job #1838207) | Cod sursa (job #3211170) | Cod sursa (job #1877702)
//
// main.cpp
// Evaluare unei expresii
//
// Created by Albastroiu Radu on 12/29/16.
// Copyright © 2016 Albastroiu Radu. All rights reserved.
//
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int first(int& it, string& expresion);
int second(int& it, string& expresion);
int third(int& it, string& expresion);
int third(int& it, string& expresion)
{
int r = 0;
if(expresion[it] == '(')
{
++it;
r = first(it, expresion);
++it;
}
else
{
while(expresion[it] >= '0' && expresion[it] <= '9')
{
r = r * 10 + expresion[it] - '0';
it++;
}
}
return r;
}
int second(int& it, string& expresion)
{
int r = third(it, expresion);
while(expresion[it] == '*' || expresion[it] == '/')
{
switch(expresion[it])
{
case '*': ++it; r *= third(it, expresion); break;
case '/': ++it; r /= third(it, expresion); break;
}
}
return r;
}
int first(int& it, string& expresion)
{
int r = second(it, expresion);
while(expresion[it] == '+' || expresion[it] == '-')
{
switch(expresion[it])
{
case '+': ++it; r += second(it, expresion); break;
case '-': ++it; r -= second(it, expresion); break;
}
}
return r;
}
int main()
{
string expresie;
getline(fin, expresie);
int it = 0;
int result = first(it, expresie);
fout << result;
}