Nu aveti permisiuni pentru a descarca fisierul grader_sufle.cpp
Cod sursa(job #1166090)
| Utilizator | Data | 3 aprilie 2014 11:08:37 | |
|---|---|---|---|
| Problema | Evaluarea unei expresii | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.84 kb |
#include<fstream>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char sir[100100] , *p;
int evaluare();
int factor();
int termen();
int main(){
f>>sir;
p = sir;
g<<evaluare();
return 0;
}
int evaluare(){
int r = factor();
while( (*p) == '+' || (*p) == '-' ){
if( (*p) == '+' ){
p++;
r += factor();
}
else{
p++;
r -= factor();
}
}
return r;
}
int factor(){
int r = termen();
while( (*p) == '*' || (*p) == '/' ){
if( (*p) == '*' ){
p++;
r *= termen();
}
else{
p++;
r /= termen();
}
}
return r;
}
int termen(){
int rez = 0;
if( (*p) == '(' ){
p++;
rez = evaluare();
p++;
}
else{
while( '0' <= (*p) && (*p) <= '9' ){
rez = rez * 10 + (*p) - '0';
p++;
}
}
return rez;
}
