Pagini recente » Cod sursa (job #1222630) | Cod sursa (job #2378145) | Cod sursa (job #271064) | Cod sursa (job #1801720) | Cod sursa (job #2790763)
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
string s;
int size_s;
int adunare();
int factor(){
int number;
number = 0;
if( s[size_s] == '(' ){
size_s++;
number = adunare();
size_s++;
}
else{
while( s[size_s] >= '0' && s[size_s] <= '9' ){
number = number * 10 + ( s[size_s] - '0' );
size_s++;
}
}
//out<<"numar: "<<number<<'\n';
return number;
}
int inmultire(){
int rezultat;
rezultat = factor();
while( s[size_s] == '*' || s[size_s] == '/' ){
//out<<s[size_s]<<'\n';
if( s[size_s] == '*' ){
size_s++;
rezultat *= factor();
}
if( s[size_s] == '/' ){
size_s++;
rezultat /= factor();
}
}
//out<<"inmultire: "<<rezultat<<'\n';
return rezultat;
}
int adunare(){
int rezultat;
rezultat = inmultire();
//out<<"rezultat: "<<rezultat<<'\n';
while( s[size_s] == '+' || s[size_s] == '-' ){
if( s[size_s] == '+' ){
size_s++;
rezultat += inmultire();
}
if(s[size_s] == '-' ){
size_s++;
rezultat -= inmultire();
}
}
//out<<"adunare: "<<rezultat<<'\n';
return rezultat;
}
int main()
{
in>>s;
size_s = 0;
out<<adunare();
return 0;
}