Написал заголовок с именем большое число, который хранит большие числа в виде строки и выполняет все математические операции над ней, но я не могу переопределить оператор /
хорошим и быстрым способом, пожалуйста, помогите мне в этом.
class BigNumber
{
string Number;
bool Sign;
bool TheValueIsSet;
bool IsZero();
BigNumber MultipyWithMinus();
BigNumber WithOutSign();
BigNumber& MakeSimple();
BigNumber operator *(int);
public:
//Ctors
BigNumber();
BigNumber(const string&);
BigNumber(const BigNumber&);
BigNumber(const int);
//Operators
int operator[](int);
BigNumber operator ()(int i,int j);
BigNumber& operator =(BigNumber&);
BigNumber& operator =(int);
BigNumber& operator =(string&);
BigNumber& operator =(const char*);
BigNumber operator +(BigNumber&);
BigNumber operator -(BigNumber&);
BigNumber operator *(BigNumber&);
BigNumber operator /(BigNumber&);
BigNumber operator %(BigNumber&);
BigNumber& operator +=(BigNumber&);
BigNumber& operator -=(BigNumber&);
BigNumber& operator *=(BigNumber&);
BigNumber& operator /=(BigNumber&);
BigNumber& operator %=(BigNumber&);
BigNumber operator ++(int);
BigNumber& operator ++();
BigNumber operator --(int);
BigNumber& operator --();bool operator ==(BigNumber&);
bool operator >(BigNumber&);
bool operator >=(BigNumber&);
bool operator <=(BigNumber&);
bool operator <(BigNumber&);
bool operator !=(BigNumber&);
//Functions
string ToString();
bool IsNegative();
};
BigNumber BigNumber::operator /(BigNumber& Second)
{
//what I must write here ?
}
мы можем сделать операцию деления только с побитовыми операторами?
Просто так мы говорим на одном языке:
Другими словами: quotient = dividend/divisor;
Я предполагаю, что вы делаете целочисленную математику — принцип почти такой же, если у вас есть десятичная точка, но вы должны «скользить» десятичную точку вдоль, когда вы выполните эти шаги.
Общий принцип строкового деления:
инициализировать конечный фактор = 0
Умножьте делитель на 10, пока его длина не станет равна дивиденду
если делитель> дивиденд, разделите временное отношение и делитель на 10.
пока делитель < дивиденд
Если дивиденд> 0, переходите к 4.
Это явно не самый эффективный метод, но он довольно простой, но и не самый худший (то есть вычитать делитель столько раз, сколько вы можете из дивиденда, а 1000000000/1 потребует 1000000000 итераций — действительно большие числа будут возьми «навсегда»).
Других решений пока нет …