Pagini recente » Cod sursa (job #2850658) | Cod sursa (job #956116) | Cod sursa (job #1354274) | Cod sursa (job #1163739) | Cod sursa (job #2860128)
#include <fstream>
#include <cstring>
using namespace std;
ifstream Gigi ("evaluare.in");
ofstream Marcel ("evaluare.out");
int poz;
int expresie ();
int termen ();
int factor ();
int numar ();
char s[100005];
int expresie ()
{
int rez=termen();
while(s[poz] && (s[poz]=='+' || s[poz]=='-')){
poz++;
if (s[poz-1]=='-') rez-=termen();
else rez+=termen();
}
return rez;
}
int termen ()
{
int rez=factor();
while(s[poz] && (s[poz]=='*' || s[poz]=='/')){
poz++;
if (s[poz-1]=='/')rez/=factor();
else rez*=factor();
}
return rez;
}
int factor ()
{ int rez =0;
if (s[poz]=='(') poz++,rez=expresie(),poz++;
else rez=numar();
return rez;
}
int numar ()
{
int rez=0;
while(s[poz]>='0'&& s[poz]<='9'){
rez*=10;
rez+=s[poz]-'0';
poz++;
}
return rez;
}
int main()
{
Gigi>>s;
Marcel<<expresie();
return 0;
}