Pagini recente » Cod sursa (job #1226388) | Cod sursa (job #2662859) | Cod sursa (job #3031997) | Cod sursa (job #1554292) | Cod sursa (job #719140)
Cod sursa(job #719140)
#include <iostream>
#include <cstdio>
#include <string.h>
using namespace std;
char s[100000];
int poz=0,eval,lung;
int adunare(),inmultire(),termen();
int adunare()
{
int x=inmultire();
while (s[poz]=='+' || s[poz]=='-')
{
if (s[poz]=='+')
{
poz++;
x+=inmultire();
}
if (s[poz]=='-')
{
poz++;
x-=inmultire();
}
}
return x;
}
int inmultire()
{
int x=termen();
while(s[poz]=='*' || s[poz]=='/')
{
if (s[poz]=='*')
{
poz++;
x*=termen();
}
if (s[poz]=='/')
{
poz++;
x/=termen();
}
}
return x;
}
int termen()
{
int x=0;
if (s[poz]=='(')
{
poz++;
x=adunare();
poz++;
return x;
}
while(s[poz]>='0' && s[poz]<='9')
x=x*10+s[poz]-'0',poz++;
return x;
}
void citire()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
scanf("%s",s);
lung=strlen(s);
eval=adunare();
printf("%d\n",eval);
}
int main()
{
citire();
return 0;
}