Pagini recente » Cod sursa (job #2953730) | Cod sursa (job #21649) | Cod sursa (job #2989828) | Cod sursa (job #2939716) | Cod sursa (job #2790456)
// Mihai Priboi
#include <bits/stdc++.h>
#define MAXN 100001
char s[MAXN];
int ind;
int adunare();
int factor() {
int nr;
nr = 0;
if( s[ind] == '(' ) {
ind++;
nr = adunare();
ind++;
}
else {
while( s[ind] >= '0' && s[ind] <= '9' )
nr = nr * 10 + s[ind++] - '0';
}
return nr;
}
int inmultire() {
int prod;
prod = factor();
while( s[ind] == '*' || s[ind] == '/' ) {
if( s[ind++] == '*' )
prod *= factor();
else
prod /= factor();
}
return prod;
}
int adunare() {
int sum;
sum = inmultire();
while( s[ind] == '+' || s[ind] == '-' ) {
if( s[ind++] == '+' )
sum += inmultire();
else
sum -= inmultire();
}
return sum;
}
int main() {
FILE *fin, *fout;
int n;
fin = fopen( "evaluare.in", "r" );
fgets( s, MAXN, fin );
fclose( fin );
fout = fopen( "evaluare.out", "w" );
ind = 0;
fprintf( fout, "%d", adunare() );
fclose( fout );
return 0;
}