Cod sursa(job #1460002)

Utilizator valentin50517Vozian Valentin valentin50517 Data 11 iulie 2015 14:08:02
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <fstream>
#include <iostream>
#include <cstring>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");

char* c;
string s;
int cif,rs;
int adunare(int k);
int parti(int k);
int cifra();
int el();

int eval(int k){
	cout << "eval " << k << '\n';
	cin.get();
	switch(*c){
		case '+': return adunare(k);
		case '-': return adunare(k);
		case '(':{
				c++;
				 
		}
		case ')':{
			c++;
			return k;
		}
		case '\0': return k;
		default : cout << "ERROR !!!\n";
	}
}

int el(){
	if(*c == '('){
		c++;
		return eval(el());
	}else{
		if(*(c+1) == '*'){
			int m = cifra();
			c++;
			return m*el();
		}else
		if(*(c+1) == '/'){
			int m = cifra();
			c++;
			return m/el();
		}
		return cifra();
	}
}

int cifra(){
	cif = 0;
	for( ; int(*c)>=48 && int(*c) <= 57; c++){
		cif*=10;
		cif+=int(*c) - 48;
	}
	return cif;
}


int adunare(int k){
	cout << "adunare\n";
	if(*c == '+'){
		c++;
		return eval(k + el());
	}
	else{
		c++;
		return eval(k - el());
	}
}



int main(){
	getline(fin,s);
	c = &s[0];
	fout << eval(el());
	return 0;
}