#include
#include
#include
#include
using namespace std;
const
int maxsize =
1000
;//函式宣告
void
menu_bigint()
;//-------------------------------------大整數四則運算選單
intin_bigint
(char
*a);
//---------------------------------大整數的輸入
void
sum_bigint
(char
*a,char
*b,char
*sum)
;//-----------大整數加法運算
void
jian_bigint
(char
*a,char
*b,char
*jian)
;//---------大整數減法運算
void
cheng_bigint
(char
*a,char
*b,char
*cheng)
;//-------大整數乘法運算
void
chu_bigint
(char
*a,int b,
int w,
char
*chu)
;//------大整數除法運算
intstrcmp_bigint
(char
*s1,
char
*s2)
;//------------------比較兩個大整數的大小
void
clean_bigint
(char
*a)if
(j) a[j-i]
='\0'
;//上鎖
if(a[0]
=='\0')}
intstrcmp_bigint
(char
*s1,
char
*s2)
else
if(s1[i]
> s2[i]
)else}if
(flag1)
return1;
if(flag2)
return-1
;if(i == len1)
return0;
}if(len1 < len2)
return-1
;}intin_bigint
(char
*a)}
return1;
}void
sum_bigint
(char
*a,char
*b,char
*sum)
else jin =0;
c[wei++
]= num +
'0';
//將本位數轉換為相應字元賦值給c
i--, j--;}
while
(i >=0)
else jin =0;
c[wei++
]= num +
'0';
//將本位數轉換為相應字元賦值給c
i--;}
while
(j >=0)
else jin =0;
c[wei++
]= num +
'0';
//將本位數轉換為相應字元賦值給c
j--;}
//如果a和b都沒有剩餘,但上一次求和的結果存在進製值
if(jin !=
0) c[wei++
]= jin +
'0';
for(i = wei -
1, j =
0; i >=
0; i--
)else
} sum[j]
='\0'
;//給字串sum上鎖
}void
jian_bigint
(char
*a,char
*b,char
*jian)
else jie =0;
c[wei++
]= num +
'0';
//將本位數轉換為相應字元賦值給c
i--, j--;}
while
(i >=0)
else jie =0;
c[wei++
]= num +
'0';
//將本位數轉換為相應字元賦值給c
i--;}
for(i = wei -
1, j =
0; i >=
0; i--
)else
} jian[j]
='\0'
;//給字串sum上鎖
}elseif(
!strcmp_bigint
(a, b)
)else
}void
cheng_bigint
(char
*a,char
*b,char
*cheng)
for(i =
0; i <= len1; i++
)else}}
}for
(i =
0, j = len -
1; j >=
0; j--
)else
} cheng[i]
='\0'
;//上鎖
}void
chu_bigint
(char
*a,char
*b,int w,
char
*chu)
num =0,
strcpy
(p, t)
;while
(strcmp_bigint
(p, b)
>=0)
chu[wei++
]= num +
'0';
while
(strcmp_bigint
(t, b)
>=0)
for(i = j; i <
strlen
(a); i++
)//c[wei++] = t / b +'0'
num =0,
strcpy
(p, t)
;while
(strcmp_bigint
(p, b)
>=0)
chu[wei++
]= num +
'0';
while
(strcmp_bigint
(t, b)
>=0)
} chu[wei++]=
'.';
for(i =
0; i < w; i++
)//c[wei++] = t / b +'0'
num =0,
strcpy
(p, t)
;while
(strcmp_bigint
(p, b)
>=0)
chu[wei++
]= num +
'0';
while
(strcmp_bigint
(t, b)
>=0)
} chu[wei]
='\0'
;//上鎖
}void
menu_bigint()
break
;case2:
/*減法運算*/if(
in_bigint
(a)&&
in_bigint
(b))
break
;case3:
/*乘法運算*/if(
in_bigint
(a)&&
in_bigint
(b))
break
;case4:
/*除法運算*/if(
in_bigint
(a)&&
in_bigint
(b))
break
;default
: cout <<
"選擇輸入有誤!"
<< endl;
break;}
cout << endl;
}int
main()
大整數四則運算
儲存方式 規定 整數的高位儲存在陣列的高位,整數的低位儲存在陣列的低位。例如 235813,則d 0 3,d 1 1,d 2 8.此方式以此類推。但注意 通常輸入為字串str 0 2 str 1 3 str 2 5 讀入之後需要反轉一下。加法運算 模板 include include struct ...
大整數四則運算
電腦可以處理很大的數。但是更大的數字運算由於資料型別占有的有限並不能表示出來,所以需要對很大的數字進行大整數處理,光是聽著就感覺令人心潮澎湃呢。核心思想 陣列存數,乙個單元存一位 下面是大整數儲存,比較的模板 struct bign bign change char str return a 比較兩...
大整數的四則運算
由小學時候的加法運算可以歸納出對其中一位進行加法的步驟 將該位上的兩個數字和進製相加,得到的結果取個位數作為該位結果,取十位數作為新的進製。高精度加法的做法與此完全相同,可以直接來看實現的 程式 include include 定義乙個結構體儲存大整數 struct bign 將整數轉換為bign ...