资源简介
自定义的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++获取计算机的CPU ID,硬盘序列号等
- C++头文件转delphi工具 + 源码
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
川公网安备 51152502000135号
评论
共有 条评论