悬赏50分 急求C++课程设计:长整数类

来源:百度知道 编辑:UC知道 时间:2024/06/02 12:41:38
完成有符号任意位长整数类CLongInt,类中至少应当包括存放各位整数数字与整数位数的数据成员,并具有如下功能:
1 重载“+”、“–”、“*”等三个四则运算符;
2 重载关系运算符供比较大小;
3 重载输入流提取符“>>”和输出流插入符“<<”完成长整数输入输出。
选作内容:
1 增加除法运算“/”和取余数运算“%”;
2 完成长整数的简单四则运算(一个或者多个运算符,不包括括号)演示,此时需要用一个栈(后缀表达式)或者两个栈(中缀表达式)来实现。
实现说明:
8 可以使用数组或者链表形式来存放整数的各位,
存放方式既可以是一个元素(char型)只存放1位数字的ASCII码,也可以是一个元素(int型)存放连续的4位数字(为防止32位微机运算的溢出,不能超过4位),如果用第一种方式,每次运算中需要先将ASCII码转换为数字,运算后再转换回来;
9 比较运算中注意数字的对位,算术运算中还需要注意借位和进位。

急盼高人指点啊,本人在此先谢过了。

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;

const int MAXN = 9999;
const int DLEN = 4;
const int DIGIT = 500;

// 数字在该类中每四位逆序存放。
// 实现了加减乘除着四个最基本的运算。
// 乘法的时间复杂度为)O(n^2)
// 以后会把它改成更加快的傅立叶变换
class BigNum {
public:
BigNum() : len(1) { memset(a, 0, sizeof(a)); }
BigNum(int );
BigNum(const char []);
BigNum(const BigNum &);
BigNum &operator=(const BigNum &);
BigNum operator+(const BigNum &) const;
BigNum operator-(const BigNum &) const;
BigNum operator*(const BigNum &) const;
BigNum operator/(const int) const;
friend ostream & operator<<(ostream &os, const BigNum &n);
friend istream & operator>>(istream &is, const BigNum &n);
private:
int a[DIGIT];
int len;
};
BigNum::BigNum(int n)
{
len = 0;
memset(