Pagini recente » Statistici Bordi Eszter (Eszti) | Cod sursa (job #2598924) | Rating Catalina Mocanu (casiopeea88) | Cod sursa (job #838638) | Cod sursa (job #613099)
Cod sursa(job #613099)
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
string::iterator it;
void citire(string &s);
int termen(); int factor(); int eval();
int main()
{
string exp;
citire(exp);
it=exp.begin();
ofstream fout("evaluare.out");
fout<<eval();
fout.close();
return 0;
}
int eval()
{
int r=termen();
while(*it=='+'||*it=='-')
{
switch(*it)
{
case '+':
++it;
r+=termen();
break;
case '-':
++it;
r-=termen();
break;
}
}
return r;
}
int termen()
{
int r=factor();
while(*it=='/'||*it=='*')
{
switch(*it)
{
case '/':
++it;
r/=factor();
break;
case '*':
++it;
r*=factor();
break;
}
}
return r;
}
int factor()
{
int r=0;
if(*it=='(')
{
++it;
r=eval();
++it;
}
else
{
while(*it>='0'&&*it<='9')
{
r=r*10+*it-'0';
++it;
}
}
return r;
}
void citire(string &s)
{
ifstream fin("evaluare.in");
fin>>s;
fin.close();
}