Pagini recente » Cod sursa (job #3186787) | Cod sursa (job #3125560) | Cod sursa (job #1636382) | Cod sursa (job #342736) | Cod sursa (job #1768902)
//
// main.cpp
// evaluare
//
// Created by Leonard Anusca on 01/10/2016.
// Copyright © 2016 Aaron. All rights reserved.
//
#include <bits/stdc++.h>
#define hmax 2
using namespace std;
char s[100010];
char *p=s;
char operand[4][4] = {"+-", "*/", "^", ""};
long operatie(long x, long y, char c);
long eval(long h);
long element();
int main() {
ifstream fin("evaluare.in");
fin.getline(s,100010);
ofstream fout("evaluare.out");
fout<<eval(0)<<'\n';
fin.close();
fout.close();
return 0;
}
long operatie(long x, long y, char c) {
switch ( c ) {
case '+': return x+y;
case '-': return x-y;
case '*': return x*y;
case '/': return x/y;
}
return 0;
}
long element() {
long r=0;
if ( *p == '(' ) {
++p; r = eval(0); ++p;
} else {
while ( strchr("0123456789", *p) )
r = r*10 + *(++p-1) - '0';
}
return r;
}
long eval(long h){
long r = (h==hmax)?element():eval(h+1);
while ( strchr(operand[h], *p) )
r = operatie(r, eval(h+1), *(++p-1));
return r;
}