(完整word版)c++实现任意长整数的四则运算

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验题目:设计一数据结构可处理任意长度的整数

概要设计

1.数据结构的定义

采用双向链表存储任意长整数。双向链表的定义如下:

class DblList {

private:

DblNode *head, *tail;

DblNode *current;

int sign;

public:

DblList(); //构造函数

~DblList(); //析构函数

bool CreatList(string); //生成一个双向链表,存储整数

int GetCount(); //获取整数的长度

void Insert(DblNode *); //从表尾插入一个结点

void InsertFront(DblNode *); //从表头插入

void Clear(); //清除该链表

void operator+(DblList &); //实现两个任意整数的加法

void operator*(DblList &); //实现两个任意整数的乘法

DblList & operator=(DblList &); //重载赋值运算符

int Compare(DblList &); //两个整数的绝对值比较

void Display(); //任意长度整数的标准化输出};

说明:数据的存储,无外乎顺序或者链表。顺序存储时,定义数组无法实现任意长度,而且需要预设一个maxsize,不是特别的方便。所以采用链式存储方式。而且任意长数据通过字符串输入。在链表的每一个结点中,数据域是在该数位上的数字大小。

2.主要功能模块的功能

◆任意长整数的输入

◆任意长整数的标准化输出

◆两个整数的加法

◆两个整数的乘法

三.详细设计(主模块流程图)

五、使用说明及测试结果

1.使用说明:

点击打开应用程序pro1.exe。依次输入任意两个整数(例如123456,

+1234567),按回车,会出现菜单,如下图:

按‘1’则实现两整数的加法

按‘2’则实现两整数的乘法

按‘#’结束

注:菜单可重复出现直至‘#’退出。实现加法,乘法如下图:

2.测试结果:

(1) 123456

(2) +1234567

(3) -987654321

(4) 12a3

(5)+

注:当输入错误时,允许重新输入。

六、源程序

/* 主函数*/

/***************************************************/

#include "cal.h"

void main(){

string s;

string p;

DblList list1;

while(1){ //输入错误时,允许重新输入cout<<"Input num1"<

cin>>s;

bool ok1=list1.CreatList(s);

if (!ok1)

{

cout<<"error!"<

}

else{

cout<<"num1:";

list1.Display();

break;

}

}

DblList list2;

while(1){

cout<<"Input num2:"<

cin>>p;

bool ok2=list2.CreatList(p);

if (!ok2)

{

cout<<"error!"<

}

else{

cout<<"num2:";

list2.Display();

break;

}

}

string choose;

while (1)

{

cout<<"请选择运算法:"<

cout<<"--------------------------"<

cout<<"|1.num1+num2 |"<

cout<<"|2.num1*num2 |"<

cout<<"|#.exit |"<

cout<<"--------------------------"<

while (1)

{

cin>>choose;

if (choose=="1")

{

list1+list2;

break;

}

else if (choose=="2")

{

list1*list2;

break;

}

else if (choose=="#")

{

return;

}

else

{

cout<<"输入有误,请重新输入!!"<

continue;

}

}

}

}

/*头文件,包括长整数数据结构的定义,成员函数的定义*/

/***********************************************************/

#include

#include

#include

using namespace std;

struct DblNode{

int data;

DblNode * prior;

DblNode * next;

};

bool IsNum(char a){ //判断字符a是否是便是数字int s=a-'0';

if(s>=0&&s<10) return true;

else return false;

}

bool IsInt(string a){ //判断字符串a是否表达一串数字bool Jud=1;

int i=1;

char s=a[0];

if (a=="+"||a=="-") return false;

if (s=='+'||s=='-') {}

else if (s>='1'&&s<='9'){}

else if (a[0]=='0'&&a[1]=='\0') return true;

else return false;

while (a[i]!='\0')

{

Jud=IsNum(a[i]);

if (Jud==0) return false;

i++;

}

return true;

}

int JudSign(string s){ //返回数字的符号

if (s[0]=='-') return -1;

else if(s[0]=='0'&&s[1]=='\0') return 0;

else return 1;

}

int CtoI(char a){

相关文档
最新文档