Pagini recente » Cod sursa (job #3197699) | Cod sursa (job #1838763) | Cod sursa (job #526047) | Cod sursa (job #49429) | Cod sursa (job #1823648)
#include <fstream>
#include <string.h>
using namespace std;
char s[100005];
int add(const int&, int&);
int multiply(const int&, int&);
int getNumber(const int&, int&);
int main(){
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
fin>>s + 1;
int n = strlen(s + 1);
int i = 1;
fout<<add(n, i);
return 0;
}
int add(const int& n, int& i){
int ret = multiply(n, i);
while(i <= n && (s[i] == '+' || s[i] == '-')){
switch(s[i]){
case '+':
i++;
ret += multiply(n, i);
break;
case '-':
i++;
ret -= multiply(n, i);
break;
}
}
return ret;
}
int multiply(const int& n, int& i){
int ret = getNumber(n, i);
while(i <= n && (s[i] == '*'|| s[i] == '/')){
switch(s[i]){
case '*':
i++;
ret *= getNumber(n, i);
break;
case '/':
i++;
ret /= getNumber(n, i);
break;
}
}
return ret;
}
int getNumber(const int& n, int& i){
int ret = 0;
if(s[i] == '('){
i++;
ret = add(n, i);
i++;
}else{
while(i <= n && s[i] >= '0' && s[i] <= '9'){
ret = ret * 10 + (s[i] - '0');
i++;
}
}
return ret;
}