Pagini recente » Rating teodor toh (teodor_toh) | Cod sursa (job #1882831) | Cod sursa (job #1706621) | Cod sursa (job #939461) | Cod sursa (job #881237)
Cod sursa(job #881237)
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
fstream in("evaluare.in",ios::in),
out("evaluare.out",ios::out);
string expresie;
int i;
int numar();
int factor();
int termen();
int main(){
in>>expresie;
out<<termen();
return 0;
}
int numar(){
int x=0;
if(expresie[i]=='('){
++i;
x=termen();
++i;
}
else{
while((expresie[i]>='0'&&expresie[i]<='9')&&i<expresie.length()){
x=x*10+(expresie[i]-'0');
i++;
}
}
return x;
}
int factor(){
int produs=numar();
while((expresie[i]=='*'||expresie[i]=='/')&&i<expresie.length()){
if(expresie[i]=='*'){
++i;
produs*=numar();
}
if(expresie[i]=='/'){
++i;
produs/=numar();
}
}
return produs;
}
int termen(){
int suma=factor();
while((expresie[i]=='+'||expresie[i]=='-')&&i<expresie.length()){
if(expresie[i]=='+'){
++i;
suma+=factor();
}
if(expresie[i]=='-'){
++i;
suma-=factor();
}
}
return suma;
}