资源简介
自定义的C++有符号大整数类型bigint
代码片段和文件信息
#include “bigint.h“
using namespace std;
//////////////////////////////////////////////////////////////
void bigint::format()
{
int len = strlen(arr);
arr[len] = 0;
for(int i=len-1; i>0; i--){
arr[MAX_LEN-len+i] = arr[i]-48; // 数字字符转转为数值
arr[i] = 0;
}
if(arr[0]==‘-‘) arr[0] = 1;
else if(arr[0]==‘+‘) arr[0] = 0;
else{
arr[MAX_LEN-len] = arr[0]-48;
arr[0] = 0;
}
}
bigint::bigint(int a)
{
bzero();
itoa(a arr 10);
format();
}
bigint::bigint(const char *str)
{
bzero();
const char *c = str;
char *p = arr;
if(*c == ‘+‘ || *c == ‘-‘)
*p++ = *c++;
while(*c)
{
if(*c>=‘0‘ && *c<=‘9‘)
*p++ = *c++;
else break;
}
*p = ‘\0‘;
format();
}
bigint::bigint(const bigint &obj)
{
for(int i=0; i arr[i] = obj.arr[i];
}
bigint& bigint::operator=(const bigint &obj)
{
if(this == &obj) return *this;
for(int i=0; i arr[i] = obj.arr[i];
return *this;
}
//////////////////////////////////////////////////////////////////////
bigint& bigint::operator++()
{
int jw len = length();
if(arr[0] == 0){
for(int i=MAX_LEN-1; i>MAX_LEN-len-2; i--)
{
++arr[i];
if(arr[i]>9)
arr[i] = arr[i] % 10;
else break;
}
}
else{
for(int i=MAX_LEN-1; i>MAX_LEN-len-2; i--)
{
--arr[i];
if(arr[i]>9)
arr[i] = arr[i] % 10;
else break;
}
}
return *this;
}
bigint bigint::operator++(int)
{
bigint ret(*this);
++*this;
return ret;
}
bigint& bigint::operator--()
{
int jw len = length();
if(arr[0] == 0){
for(int i=MAX_LEN-1; i>MAX_LEN-len-2; i--)
{
--arr[i];
if(arr[i]>9)
arr[i] = arr[i] % 10;
else break;
}
}
else{
for(int i=MAX_LEN-1; i>MAX_LEN-len-2; i--)
{
++arr[i];
if(arr[i]>9)
arr[i] = arr[i] % 10;
else break;
}
}
return *this;
}
bigint bigint::operator--(int)
{
bigint ret(*this);
--*this;
return ret;
}
bigint bigint::operator-() const
{
bigint ret = *this;
ret.arr[0] = 1-ret.arr[0];
return ret;
}
bigint bigint::abs() const
{
bigint ret = *this;
ret.arr[0] = 0;
return ret;
}
///////////////////////////////////////////////////////////////////
bool bigint::absbigger(const bigint &obj) const
{
for(int i=1; i if(arr[i] > obj.arr[i])
return true;
else if(arr[i] < obj.arr[i])
return false;
}
return false;
}
bool bigint::abssmaller(const bigint &obj) const
{
fo
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-03-23 15:05 bigint\
文件 5464 2012-03-23 14:56 bigint\bigint.cpp
文件 2395 2012-03-23 14:48 bigint\bigint.h
文件 2901 2012-03-23 14:44 bigint\bigint_operator.cpp
文件 3923 2012-03-23 14:52 bigint\main.cpp
文件 80 2012-03-23 15:07 bigint\readme.txt
相关资源
- C++大学教程(第9版)C++ How to Program
- Intel C++ Compiler V11.0.074安装及简单设置
- 计算方法中三次样条插值法的实现
- 动态规划算法求解字符串比较问题c
- C++实现QM算法
- RSA(C++)代码实现全
- 2019蓝桥杯C_C++省赛 真题
- 无向图的邻接矩阵压缩存储.cpp
- 坦克大战C++编程坦克大战C++编程
- 图像处理 梯度锐化 C/C++语言实现
- TIFF的C++库
- Linux环境下C语言Socket编程——客户端
- 在Qt中用C++编写的计算器程序
- K-means算法串行程序C++
- 读入stl文件的一段C++代码
- c++primerplus最全课后习题答案
- C++模糊逻辑代码实现
- 计算机网络编程vc++学生管理系统
- 生产者消费者问题C/C++源程序
- 郑莉版c++课后习题答案
- 数字信号处理C++程序来源《数字处理
- opencv数字识别.cpp
- c/c++ 最速下降法计算最优值 利用ar
- ue4蓝图c++动态改变staticmeshactor材质动
- SHA-256算法的C++实现及demo
- matlab2013a/b vs2013支持
- MATLAB数字图像处理:从仿真到C C++代码
- C++基础入门.md
- 猜动物游戏.zip
- 学生管理系统c++
评论
共有 条评论