C BigInterger 加減乘除

2021-05-02 20:22:10 字數 4018 閱讀 1810

c++ biginterger(加減乘除)

#include

#include

#include

#include

#include

using namespace std;

class dividedbyzeroexception ...{};

class biginteger

...;

// biginteger.cpp

const biginteger biginteger::zero=biginteger(0);

const biginteger biginteger::one =biginteger(1);

const biginteger biginteger::ten =biginteger(10);

biginteger::biginteger()

...biginteger::biginteger(int val)...

do... while ( val != 0 );

}biginteger::biginteger(string& def)...

}digits.push_back( (char)((*iter) - '0' ) );

}trim();

}void biginteger::trim()...

if( digits.size()==0 )...

}biginteger::biginteger(const biginteger& op2)...

biginteger biginteger::operator=(const biginteger& op2)...

biginteger biginteger::abs() const ...

biginteger biginteger::pow(int a)

...while ( iter1 != op1.digits.end() )...

while ( iter2 != op2.digits.end() )...

if( to_add != 0 )

op1.digits.push_back(to_add);

return op1;

}else...

biginteger operator-=(biginteger& op1,const biginteger& op2)...

else ...

vector::iterator iter1;

vector::const_iterator iter2;

iter1 = op1.digits.begin();

iter2 = op2.digits.begin();

char to_substract = 0;  //借位

while ( iter1 != op1.digits.end() && iter2 != op2.digits.end())...

iter1++;

iter2++;

}while ( iter1 != op1.digits.end() )...

else break;

iter1++;

}op1.trim();

return op1;

}else...

}biginteger operator*=(biginteger& op1,const biginteger& op2)...

if( to_add != 0)

temp.push_back( to_add );

int num_of_zeros = iter2 - op2.digits.begin();

while(  num_of_zeros--)

temp.push_front(0);

biginteger temp2;

temp2.digits.insert( temp2.digits.end() , temp.begin() , temp.end() );

temp2.trim();

result = result + temp2;

}iter2++;

}result.sign = ( (op1.sign && op2.sign) || (!op1.sign && !op2.sign) );

}op1 = result;

return op1;

}biginteger operator/=(biginteger& op1 , const biginteger& op2 ) throw(dividedbyzeroexception) ...

//現在 t1 > t2 > 0

//只需將 t1/t2的結果交給result就可以了

dequetemp;

vector::reverse_iterator iter = t1.digits.rbegin();

biginteger temp2(0);

while( iter != t1.digits.rend() )...

temp.push_front( s );

iter++;

}op1.digits.clear();

op1.digits.insert( op1.digits.end() , temp.begin() , temp.end() );

op1.trim();

op1.sign = ( (op1.sign && op2.sign) || (!op1.sign && !op2.sign) );

return op1;

}biginteger operator%=(biginteger& op1,const biginteger& op2) throw(dividedbyzeroexception) ...

biginteger operator+(const biginteger& op1,const biginteger& op2)...

biginteger operator-(const biginteger& op1,const biginteger& op2)...

biginteger operator*(const biginteger& op1,const biginteger& op2)...

biginteger operator%(const biginteger& op1,const biginteger& op2) throw(dividedbyzeroexception) ...

//uniary operators

biginteger operator-(const biginteger& op)...

biginteger operator++(biginteger& op)...

biginteger operator++(biginteger& op,int x)...

biginteger operator--(biginteger& op)...

biginteger operator--(biginteger& op,int x)...

bool operator<(const biginteger& op1,const biginteger& op2)...

return false;}}

bool operator==(const biginteger& op1,const biginteger& op2)...

return true;

}bool operator!=(const biginteger& op1,const biginteger& op2)...

bool operator>=(const biginteger& op1,const biginteger& op2)...

bool operator<=(const biginteger& op1,const biginteger& op2)...

ostream& operator<<(ostream& stream,const biginteger& val)...

istream& operator>>(istream& stream, biginteger& val)...

int main()

...return 0;

}

C 加減乘運算

using system namespace 加減乘除 return array private static int sub int array1,int array2 return array private static int mup int array1,int array2 return...

加減乘符號逆向

常量摺疊 計算公式 現多個常量進行計算時並且編譯器可以在編譯期間可以進行計算的,這樣原始碼中機會把結果的常量值進行替換 常量傳播 指的是在編譯期間可以計算出結果的變數轉換為常量值 優化大部分在release版本下才會優化.但是debug版本也會優化,在不影響使用者除錯的前提下進行優化 1常量加常量 ...

高精度加 減 乘作業

include include using namespace std intmain num2 505 int sum 505 cin a b int lena strlen a 計算長度 int lenb strlen b int len lena lenb lena lenb 倒序儲存資料 f...