/////// File NewEng.C /////// #include #include "NewEng.h" const char* NewEng::keys = "+-*/=^NnAaCcQqMmRrSsKk"; void NewEng::allclear() { cnst = m = 0.0; CalcEng::allclear(); } int NewEng::pre_oper(char c) { switch( c ) { case 'A': case 'a': // AC allclear(); return 1; case 'R': case 'r': // MR operand(m); // darg=argcnt-1; return 1; case 'K': // constant recall operand(cnst);// darg=argcnt-1; return 1; case 'S': case 's': // sqrt op = '='; if (argcnt == 2) ans = arg; if ( ans < 0.0 ) err_flag = 1; else ans = sqrt(ans); return 1; } return 0; } void NewEng::operate(char c) { if ( pre_oper(c) ) return; CalcEng::operate(c); post_oper(c); } void NewEng::post_oper(char c) { switch( c ) { case 'M': // M+ m += ans; op = '='; break; case 'm': // M- m -= ans; op = '='; break; case 'k': // keep as constant cnst = ans; op = '='; break; } }