Pagini recente » Cod sursa (job #2485259) | Cod sursa (job #1867154) | Cod sursa (job #2149073) | Cod sursa (job #884027) | Cod sursa (job #711896)
Cod sursa(job #711896)
#include <fstream>
#include <iostream>
#include <string.h>
using namespace std;
char s[100001];
int i=0;
int exp();
int termen();
int factor()
{
int k=1;
if (s[i]=='(')
{
i++;
k=exp();
if(!k) return 0;
if(s[i]!=')') return 0;
else i++;
}
else
{ int nr=0;
while (i<strlen(s) && s[i]>='0' && s[i]<='9') {nr=nr*10+s[i]-'0' ;i++;}
k=nr;
}
return k;
}
int termen()
{
int k=factor();
while(i<strlen(s))
if(s[i]=='*')
{
i++;
k=k*factor();
}
else
if(s[i]=='/')
{
i++;
k=k/factor();
} else break;
return k;
}
int exp()
{
int k=termen();
while( i<strlen(s))
if(s[i]=='+')
{
i++;
k=k+termen();
}
else
if(s[i]=='-')
{
i++;
k=k-termen();
}else break;
return k;
}
int main()
{
ifstream fin("evaluare.in");
fin>>s;
ofstream fout("evaluare.out");
fout<<exp();
return 0;
}