[問題] C++大數乘法的overload
小弟用c++ 想要寫一個class
private下變數只有一個 int num[100]
是要用來儲存大數乘法用的值
既然是用class 那就要寫一個operator overloading 給class用
最近剛接觸這個東西還不是很熟
照著一些姑狗的方法試著去做
以下是我的code
HugeInt HugeInt::operator*(const HugeInt& number)
{
int num1=0;
HugeInt _number;
HugeInt result;
for(int i=0 ; i<=99 ; i++)
result.num[i] = 0;
for(int i=99 ;i>=0; i--){
for(int j=99 ; j>=0 ; j--)
result.num[198-i-j] += number.num[i]*_number.num[j];
}
for( int i=99 ; i>=0 ; i--){
result.num[i-1] += result.num[i] /10;
result.num[i] = result.num[i]%10;
}
return result;
}
我的想法是
把被乘數乘以乘數的每個位數以後 在把每個位數全部加起來總合
ex.
3 5 7 9
* 2 4 6
--------------------------
18 36 54
14 28 42
10 20 30
6 12 18
--------------------------------
6 22 52 76 78 54
-> 8 8 0 4 3 4
但實際在C++上跑
都會乘出一大堆數字 (有正有負) @@
想很久還是不知道問題出在哪@@
希望有高手能幫解決 感謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.254.171.40
→
05/20 02:39, , 1F
05/20 02:39, 1F
→
05/20 02:40, , 2F
05/20 02:40, 2F
→
05/20 02:41, , 3F
05/20 02:41, 3F
→
05/20 02:41, , 4F
05/20 02:41, 4F
→
05/20 02:42, , 5F
05/20 02:42, 5F
→
05/20 02:43, , 6F
05/20 02:43, 6F
→
05/20 02:44, , 7F
05/20 02:44, 7F
→
05/20 02:45, , 8F
05/20 02:45, 8F
→
05/20 02:46, , 9F
05/20 02:46, 9F
→
05/20 02:46, , 10F
05/20 02:46, 10F
→
05/20 02:50, , 11F
05/20 02:50, 11F
→
05/20 03:01, , 12F
05/20 03:01, 12F
→
05/20 03:23, , 13F
05/20 03:23, 13F
→
05/20 04:01, , 14F
05/20 04:01, 14F
→
05/20 04:02, , 15F
05/20 04:02, 15F
→
05/20 04:05, , 16F
05/20 04:05, 16F
→
05/20 10:50, , 17F
05/20 10:50, 17F
→
05/20 11:33, , 18F
05/20 11:33, 18F
→
05/20 14:34, , 19F
05/20 14:34, 19F
→
05/20 15:51, , 20F
05/20 15:51, 20F
→
05/20 16:35, , 21F
05/20 16:35, 21F
→
05/20 16:36, , 22F
05/20 16:36, 22F
→
05/20 16:36, , 23F
05/20 16:36, 23F
推
05/20 16:39, , 24F
05/20 16:39, 24F
推
05/20 16:41, , 25F
05/20 16:41, 25F
→
05/20 16:41, , 26F
05/20 16:41, 26F
→
05/20 17:32, , 27F
05/20 17:32, 27F
推
05/20 18:25, , 28F
05/20 18:25, 28F
推
05/20 22:46, , 29F
05/20 22:46, 29F
→
05/20 22:47, , 30F
05/20 22:47, 30F
推
05/23 00:00, , 31F
05/23 00:00, 31F
→
05/23 00:01, , 32F
05/23 00:01, 32F