Pagini recente » Cod sursa (job #675501) | Cod sursa (job #581644) | Cod sursa (job #1714797) | Cod sursa (job #2745880) | Cod sursa (job #1263798)
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
string s;
int p = 0;
ofstream out("evaluare.out");
int evalueaza();
int numar();
int inamulteste();
int aduna();
int numar()
{
int r=0;
while (s[p] >= '0' && s[p] <= '9')
{
r = r * 10 + s[p] - 48;
p++;
}
if (r == 0){ return 1; }
return r;
}
int inmulteste()
{
int r=1;
r = numar();
while (s[p] == '(' || s[p] == '*' || s[p] == '/')
{
if (s[p] == '(')
{
p++;
r *= evalueaza();
}
if (s[p] == '*')
{
p++;
r *=numar();
}
if (s[p] == '/')
{
p++;
r /= numar();
}
}
return r;
}
int aduna()
{
int r;
r = inmulteste();
while (s[p] == '+' || s[p] == '-')
{
if (s[p] == '+')
{
p++;
r += inmulteste();
}
if (s[p] == '-')
{
p++;
r -= inmulteste();
}
}
return r;
}
int evalueaza()
{
int r;
r = aduna();
if (s[p] == ')'){ p++; return r; }
return r;
}
int main()
{
ifstream in("evaluare.in");
in >> s;
out<<evalueaza();
}