Pagini recente » Cod sursa (job #2115891) | Cod sursa (job #2684846) | Cod sursa (job #617039) | Cod sursa (job #2894089) | Cod sursa (job #2078997)
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
#define lim 100010
char ini[lim];
int n, dr;
int termen();
int factor();
int eval()
{
int aux=termen();
while (ini[dr]=='+' || ini[dr]=='-')
{
if (ini[dr]=='+')
dr++, aux=aux+termen();
if (ini[dr]=='-')
dr++, aux=aux-termen();
}
return aux;
}
int termen()
{
int aux=factor();
while (ini[dr]=='/' || ini[dr]=='*')
{
if (ini[dr]=='/')
dr++, aux/=factor();
if (ini[dr]=='*')
dr++, aux*=factor();
}
return aux;
}
int factor()
{
int aux=0;
if (ini[dr]=='(')
dr++, aux=eval(), dr++;
while (ini[dr]>='0' && ini[dr]<='9')
aux = aux * 10 + ini[dr] - '0', dr++;
return aux;
}
int main()
{
fin>>ini;
fout<<eval();
fout.close();
return 0;
}