void NobracketString::substract(string Anumb,string Atype, string Bnumb, string Btype){ //does not need to handle differen type here only handel same type or (fraction and integer) isReturnOneNumb = false; if(Atype==Btype){ //if they are the same type; if(Atype == "frac") { Fraction* fra = new Fraction(Anumb); Fraction* frb = new Fraction(Bnumb); //fra->Subtraction(*frb); opAnswer = fra->getAnswer(); isReturnOneNumb = true; // here may need to delete the object. } else if(Atype == "int") { Integers* intnumbA = new Integers(Anumb); Integers* intnumbB = new Integers(Bnumb); intnumbA->Subtract(*intnumbB); opAnswer = intnumbA->getAnswer(); //// //delete[] intnumb; isReturnOneNumb = true; } else if(Atype=="log") { Logs* lgA = new Logs(Anumb); Logs* lgB = new Logs(Bnumb); lgA->substract(*lgB); opAnswer = lgA->getAnswer(); //delete[] lg; if(opAnswer.find("-")<100) { //if the opanswer string contains "+", means it return a complex expression isReturnOneNumb = false; } else isReturnOneNumb = true; } else if(Atype=="root") { nthRoot* nthNumb = new nthRoot(Anumb); nthRoot* B = new nthRoot(Bnumb); nthNumb->subtract(*B); opAnswer = nthNumb->getAns(); if(opAnswer.find("-")<100) //if the opanswer string contains "+", means it return a complex expression isReturnOneNumb = false; else isReturnOneNumb = true; }//it is handled in the calculating() else if(Atype=="pi"){ // Pi* p = new Pi(Anumb); // p->Subtract(*p); // opAnswer = p->getAnswer(); isReturnOneNumb = true; } else if(Atype=="e"){ Exponential* p = new Exponential(Anumb); Exponential* b = new Exponential(Bnumb); //p->Subtract(*b); opAnswer = p->getAnswer(); isReturnOneNumb = true; } else if(Atype=="exp"){ Exponent* power = new Exponent(Anumb); Exponent* b = new Exponent(Bnumb); power->subtract(*b); opAnswer = power->getAnswer(); if(opAnswer.find("-")<100) //if the opanswer string contains "+", means it return a complex expression isReturnOneNumb = false; else isReturnOneNumb = true; } }else{ //if not the same type } }