اول این که تعریف compare رو به این شکل بزار
int BigNumber::compare1(const string& Num1 ,const string& Num2)
بعد میشد این if آخر توی while رو به این شکل هم نوشت :
if(Num1.size() == Num2.size())
{
int i= 0;
while(i<Num2.size())
{
if(Num1.at(i)<Num2.at(i))
return -1;
else if(Num1.at(i) >Num2.at(i))
return 1;
i++;
}
return 0;
}
نکته بعد این که این تابع از نظر منطقی درست کار نمی کنه زمان /= نباید یک شی جدیدم اونم static بسازین باید همون کلاس رو عوض کنین مقدارشو
BigNumber& BigNumber::operator/=(const BigNumber& other)
{
static BigNumber r = 0;
string &Num1 = this->data_;
string Num2 = other.data_;
while(compare1(Num1,Num2)>0)
{
r++;
Num1 = subtract(Num1,Num2);
}
return r;
}
مثلا بهتر بود این شکلی می نوشتین
BigNumber& BigNumber::operator/=(const BigNumber& other)
{
string Num1 = this->data_;
const string& Num2 = other.data_;
this->data="0";
while(compare1(Num1,Num2)>0)
{
this->operator+=("1");
Num1 = subtract(Num1,Num2);
}
return *this;
}