实验报告长整数四则运算

合集下载

数据结构课程设计长整数四则运算

数据结构课程设计长整数四则运算

数据结构课程设计题目:长整数四则运算班级学号学生姓名提交日期成绩计算机与通信工程学院长整数四则运算一需求分析:问题描述:设计一个实现任意长的整数进行加法运算的演示程序。

基本要求:利用双向循环链表实现长整数的存储,每个结点含一个整形变量。

任何整形变量的范围是 -(2^15 - 1) (2^15 - 1)。

输入和输出形式:按中国对于长整数的表示习惯,每四位一组,组间用逗号隔开。

在现实生活中有很多地方,例如航空航海、生物医疗等等方面,都需要很大的数来表示,这些用int甚至长整型long long都是远不够的,所以需要有一种算法来解决这种大数的表示和运算。

该问题只要求了大数的相加运算。

二详细设计:大致思路:【存储】用两个链表,每个节点保存一位数,在链表头保存数的正负,正数保存1,负数保存-1,如果是正数,后面每一位都储存正数,负数每一位都储存负数,数字按照链表头到链表尾从高位到低位的顺序;【相加】从两个链表的尾部开始同步向前相加,加完存到第一个链表,第二个加完的结点销毁,会存在两个链表不一样长的情况,没加的直接连到链表的前面,最高位的符号存到链表的头;【调整】根据表头的符号,调整后面的数字的值,中间会产生进位或者退位的问题,各个节点的符号不一定相同,但对于正负数都可以建立同样的调整模式,将正负到tmp中(1或-1)加或者减(tmp*10),然后对前一位加或者减tmp*1即可。

第一位保留符号不变,这样不用处理多余的进位,也就不用再产生新的节点,也不用保存符号。

【输出】从前到后遍历已经处理好的表,将每一位进行输出就可以了。

结构体定义struct Node{Node *pre;Node *next;int data;};功能函数void Input(Node *p,Node *t)//处理输入和保存void disply(Node *h,Node *t,int l)//输出void add(Node *h1,Node *t1,Node *h2,Node *t2)//每一位相加int adjust(Node *h,Node *t)//将各个位的正负、大小、进位进行调整源程序:。

长整数运算实验报告

长整数运算实验报告

一、实验目的1. 理解长整数的概念及其在编程中的应用。

2. 掌握长整数的基本运算方法,包括加法、减法、乘法和除法。

3. 提高编程能力,通过实际操作加深对长整数运算的理解。

二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 开发工具:PyCharm三、实验内容1. 长整数的定义与初始化2. 长整数的加法运算3. 长整数的减法运算4. 长整数的乘法运算5. 长整数的除法运算四、实验步骤1. 长整数的定义与初始化在Python中,长整数不需要特殊声明,只需按照常规整数进行定义即可。

下面是长整数的定义与初始化示例:```pythona = 123456789012345678901234567890b = 987654321098765432109876543210```2. 长整数的加法运算长整数的加法运算与常规整数相同,使用`+`符号。

下面是长整数加法运算的示例:```pythonresult = a + bprint("加法运算结果:", result)```3. 长整数的减法运算长整数的减法运算同样与常规整数相同,使用`-`符号。

下面是长整数减法运算的示例:```pythonresult = a - bprint("减法运算结果:", result)```4. 长整数的乘法运算长整数的乘法运算与常规整数相同,使用``符号。

下面是长整数乘法运算的示例:```pythonresult = a bprint("乘法运算结果:", result)```5. 长整数的除法运算长整数的除法运算与常规整数相同,使用`/`符号。

下面是长整数除法运算的示例:```pythonresult = a / bprint("除法运算结果:", result)```五、实验结果与分析1. 长整数的定义与初始化:通过定义长整数,我们了解了长整数在Python中的表示方法。

长整数四则运算 实验报告

长整数四则运算 实验报告

“数据结构”课程设计报告长整数四则运算学生姓名:吴成杰徐文良指导教师:陈少军所在系:电子信息系所学专业:计算机科学与技术年级:2010计算机(1)班目录第1章需求分析 (1)1.1选题要求 (1)1.2选题背景和意义 (1)1.3选题目标 (2)1.4组员分配任务 (2)第2章概要分析 (2)2.1系统数据流图 (2)2.2原始数据 (3)2.3输出数据 (3)2.4对数据的处理 (3)2.5数据结构(存储方式) (4)2.6模块分析 (4)第3章详细设计 (4)第4章系统说明书 (11)第5章系统测试 (12)项目总结 (16)参考文献 (17)第1章需求分析1.1选题要求1、实现一个任意长度的整数进行四则运算的演示程序(1) 运算过程分步骤显示(2) 完成含有加法和减法的四则运算(3) 完成含有乘法和除法的四则运算(4) 包含括号的四则运算2、2个人对应完成2个人各自的任务1.2选题背景和意义(1)选题背景操作系统老师曾经布置我们做一道斐波拉契数列和求30的阶乘,但是计算的结果很大,还不知道该做样的存储,老师告诉我们需要用高精度数的知识能将计算的结果存储起来,数据结构老师也曾经布置过一个实验题,是计算长整数的加法的,但是长整数的位数是固定的。

于是我们试想计算任意长度的整数是不是能把所有的四则运算问题解决。

(2)选题意义我们选的这个课题能计算任意的四则运算,比如:1234567+7654321=8888888987654321-123456789=86419754123*456=5608884/42=2586-25*15+8*(9*2-144/12)=586-375+8*(18-12)=586-375+8*6=586-355+48=211+48=2591.3选题目标实现一个任意长度的整数进行四则运算的演示程序(1) 运算过程分步骤显示(2) 完成含有加法和减法的四则运算(3) 完成含有乘法和除法的四则运算(4) 包含括号的四则运算1.4组员分配任务我们组有两个成员,分别为吴成杰和徐文良,一个负责写主函数、函数整体的框架和写转换函数函数和对输入的字符进行处理,一个负责写出栈函数和写处理函数和拼接,程序出现错误,两个人一起在一起互相商量,修改。

实验报告长整数四则运算

实验报告长整数四则运算

实验报告:长整数四则运算实验者:唐怡04120082 题目:设计一个实现任意长的整数进行加法运算的演示程序一.需求分析1.本演示程序中,长整数为任意长的带符号的长整数的输入及求加法后输出的长整数形式为每四位一组,组间用逗号隔开,输入以“回车符”为结束标志。

2.程度执行的命令包括:1)构造整数1,2)构造整数2,3)做加法运算,4)结束3.测试数据(1)0;0;应输出“0”(2)-2345,6789;-7654,3211;应输出“-1,0000,0000”(3)-9999,9999;1,0000,0000,0000;应输出“9999,0000,0001”(4)1,0001,0001;-1,0001,0001;应输出“0”(5)1,0001,0001;-1,0001,0000;应输出“1”(6)-9999,9999,9999;-9999,9999,9999;应输出“-1,9999,9999,9998”(7)1,0000,9999,9999;1;应输出“1,0001,0000,0000”。

二.概要设计为实现上述程序功能,应以有序表实现长整数的存储,为此,需要抽象数据类型:有序表1.有序表的抽象数据类型定义为:ADT Dulinklist{数据对象:D={ai|ai为带符号整数,1,2,…,n,n>=0}数据关系:R1={<ai-1,ai>|ai-1,ai属于集合D,ai-1<ai,i=2,…..,n}基本操作:InitDulinklist(&)操作结果:构造一个空的有序表LDestroyDulinklist(&)初始条件:有序表L已存在操作结果:销毁有序表LDulinklistLength(L)初始条件:有序表L已存在操作结果:返回有序表L的长度DulinklistEmpty(L)初始条件:有序表L已存在操作结果:若有序表L为空表,则返回TUER,否则返回FALSEGetElem(L,pos)初始条件:有序表L已存在操作结果:若干1〈=POS〈=LENGTH(L),则返回有序表L中第POS个数据元素。

计算机软件及应用课程设计实验报告长整型数四则运算

计算机软件及应用课程设计实验报告长整型数四则运算

数据结构实验报告题目:长整型数四则运算学院计算机学院专业软件工程年级班别2010级1班成绩____________________2012年7月1日目录课程设计实验报告1一、实验概要- 1 -二、实验目的- 1 -三、实验环境- 1 -四、抽象数据类型的定义- 1 -五、存储结构的定义- 1 -六、算法设计- 2 -六、程序运行情况- 30 -七、实验总结- 33 -实验中遇到的问题:-33-实验总结:-33-八、思考题错误!未定义书签。

题目:长整型数四则运算一、实验概要1、设计一个实现任意长的整数进行四则运算的程序。

2、输入和输出形式是按中国对于长整数的表示习惯,每四位一组,组间用逗号隔开,长整数位数没有上限,以分号结束长整型数据的输入。

3、程序执行的命令包括:1)、输入长整数1;2)、输入长整数2;3)、输入执行的运算符;4)、计算并输出结果;5)、结束。

4、测试数据:(以加法为例)(1)、0;0;+;应输出“0”。

(2)、-2345,6789;-7654,3211;+;应输出“-1,0000,0000”。

(3)、-9999,9999;1,0000,0000,0000;+;应输出“9999,0000,0001”.(4)、1,0001,0001;-1,0001,0001;+;应输出“0”.(5)、1,0001,0001;-1,0001,0000;+;应输出“1”。

(6)、-9999,9999,9999;-9999,9999,9999;+;应输出“-1,9999,9999,9998”.(7)1,0000,9999,9999;1;+;应输出“1,0001,0000,0000”.二、实验目的输入和输出形式是按中国对于长整数的表示习惯,每四位一组,组间用逗号隔开,长整数位数没有上限,以分号结束长整型数据的输入,进行计算三、实验环境Visual C++6.0四、抽象数据类型的定义1、双向循环链表的数据结构及操作定义如下:typedef short ElemType; //定义基本数据类型,我们采用short来表示任意4位整数。

计算机C++实现任意长整数的四则运算

计算机C++实现任意长整数的四则运算

计算机C++实现任意长整数的四则运算一、什么是任意长整数任意长整数,也称作大整数或无限长整数,可以表示出任意长度的整数,是由多个整数构成的有限序列。

它的最大特征是其位数不受限制,可以用来表示任意大小的整数。

二、任意长整数四则运算1、四则运算任意长整数四则运算是指对任意长整数进行加、减、乘、除四种基本运算的操作。

2、C++实现任意长整数的四则运算(1)首先要明确,任意长整数是由多个整数构成的有限序列,所以要想实现四则运算,必须将单个整数进行相应的计算。

(2)因此,可以采用逐位计算的方法来实现任意长整数的四则运算。

具体的步骤如下:(a)以字符串的形式表示任意长整数,并转换成整型数组,每个元素代表任意长整数中的一位数字;(b)从数组的末尾开始,依次取出每一位数字,根据相应的运算符进行计算;(c)将计算结果存入到一个新的数组中;(d)最后,把新数组中的元素按照从小到大的顺序组合成一个新的字符串,这就是任意长整数的四则运算的结果。

三、C++实现任意长整数的四则运算的算法(1)定义函数原型:string Cal(stringstr1,string str2,char op);(2)申请内存空间:int *arr1 = newint[str1.length()]; int *arr2 = newint[str2.length()]; int *res = newint[max(str1.length(),str2.length())];(3)将字符串转化为整型数组:for(int i=0;i <str1.length();i++) arr1[i] = str1[i] - '0'; for(int j=0;j < str2.length();j++) arr2[j] = str2[j] - '0';(4)根据所传入的运算符,进行相应的运算:switch (op) {case '+': //加法运算break; case '-': //减法运算break; case '*': //乘法运算break; case '/': //除法运算break;}(5)将计算结果存入到新的数组中:for(intk=0;k<max(str1.length(),str2.length());k++) res[k] = add[k];(6)将计算结果的数组转换成字符串:string result=""; for(intl=0;l<max(str1.length(),str2.length());l++) result += to_string(res[l]);(7)返回计算结果return result;(8)释放内存空间delete[] arr1; delete[] arr2; delete[] res;四、总结任意长整数四则运算是指对任意长整数进行加、减、乘、除四种基本运算的操作。

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

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

实验题目:设计一数据结构可处理任意长度的整数概要设计1.数据结构的定义采用双向链表存储任意长整数。

双向链表的定义如下:class DblList {private:DblNode *head, *tail;DblNode *current;int sign;public:DblList();用说明:点击打开应用程序。

依次输入任意两个整数(例如123456,+1234567),按回车,会出现菜单,如下图:按‘1’则实现两整数的加法按‘2’则实现两整数的乘法按‘#’结束注:菜单可重复出现直至‘#’退出。

实现加法,乘法如下图:2.测试结果:(1) 123456(2) +1234567(3) -1(4) 12a3(5)+注:当输入错误时,允许重新输入。

五、源程序/* 主函数 *//***************************************************/#include ""void main(){string s;string p;DblList list1;while(1){ xit |"<<endl;cout<<"--------------------------"<<endl;while (1){cin>>choose;if (choose=="1"){list1+list2;break;}else if (choose=="2"){list1*list2;break;}else if (choose=="#"){return;}else{cout<<"输入有误,请重新输入!!"<<endl;continue;}}}}/*头文件,包括长整数数据结构的定义,成员函数的定义*//***********************************************************/#include <iostream>#include <string>#include <cmath>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){int i=a-'0';return i;}class DblList { //定义一个双向链表类,存储任意长度的数字private: //并可以进行标准化输出和加法,乘法。

数据结构综合实训长整数四则运算

数据结构综合实训长整数四则运算

4
长整数四则运算实现
长整数四则运算实现
加法
对于加法,我们需要从低位到高位依次相加。如果结果大于等于10,我们需要进位。我们 可以使用链表或数组来实现这个算法
链表加法示例代码(Python)
THANK YOU
2
数据结构选择
数据结构选择
链表
链表是一种动态数据结构,可以根据需要随时增加或减少节点。链表中的每个节点包含两 部分:数据和指向下一个节点的指针。使用链表可以方便地实现长整数的每一位的存储和 操作
数据结构选择
数组
数组是一种静态数据 结构,其大小在创建 时确定,不能更改。 对于长整数,我们可 以使用数组来表示每 一位数字,从而实现 大数的存储和运算
20XX
数据结构综合实训 -长整数四则运算
时 间:20XX-XX-XX
-
1 2 3 4
1
引言
引言
在计算机科学中,长整数四则运算是一 个经典问题
由于计算机的整数类型通常有固定的范 围,在进行大数运算时,必须采用特殊 的数据结构和技术来处理
本实训将介绍如何使用链表和数组来实 现长整数的表示和四则运算
数据结构选择
3
长整数表示
长整数表示
链表表示法
我们可以将长整数表示为一个链表,其中 每个节点存储一个数字(0-9)。例如,数 字123可以表示为1->2->3。链表的头部表 示整数的低位,尾部表示高位
长整数表示
数组表示串中的每个字符存储在数 组的一个元素中。例如,数字123可以表示为array [ 0]=1, array [ 1]=2, array [ 2]=3
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告:长整数四则运算
实验者:唐怡04120082 题目:设计一个实现任意长的整数进行加法运算的演示程序
一.需求分析
1.本演示程序中,长整数为任意长的带符号的长整数的输入及求加法后输出的长整数形式为每四位一组,组间用逗号隔开,输入以“回车符”为结束标志。

2.程度执行的命令包括:1)构造整数1,2)构造整数2,3)做加法运算,4)结束3.测试数据
(1)0;0;应输出“0”
(2)-2345,6789;-7654,3211;应输出“-1,0000,0000”
(3)-9999,9999;1,0000,0000,0000;应输出“9999,0000,0001”
(4)1,0001,0001;-1,0001,0001;应输出“0”
(5)1,0001,0001;-1,0001,0000;应输出“1”
(6)-9999,9999,9999;-9999,9999,9999;应输出“-1,9999,9999,9998”
(7)1,0000,9999,9999;1;应输出“1,0001,0000,0000”。

二.概要设计
为实现上述程序功能,应以有序表实现长整数的存储,为此,需要抽象数据类型:有序表
1.有序表的抽象数据类型定义为:
ADT Dulinklist{
数据对象:D={ai|ai为带符号整数,1,2,…,n,n>=0}
数据关系:R1={<ai-1,ai>|ai-1,ai属于集合D,ai-1<ai,i=2,…..,n}
基本操作:
InitDulinklist(&)
操作结果:构造一个空的有序表L
DestroyDulinklist(&)
初始条件:有序表L已存在
操作结果:销毁有序表L
DulinklistLength(L)
初始条件:有序表L已存在
操作结果:返回有序表L的长度
DulinklistEmpty(L)
初始条件:有序表L已存在
操作结果:若有序表L为空表,则返回TUER,否则返回FALSE
GetElem(L,pos)
初始条件:有序表L已存在
操作结果:若干1〈=POS〈=LENGTH(L),则返回有序表L中第POS个数据元素。

Append(&L,e)
初始条件:有序表L已存在
操作结果:在有序表L的末尾插入元素e
}ADT Dulinklist
3.本程序包含三个模块:
1)主程序模块:
2)有序表单元模块——实现有序表的抽象数据类型;
3)结点结构单元模块——定义有序表的结点结构
各模块之间的调用关系如下:
主程序模块

有序表单元模块

结点结构单元模块
三.详细设计
1.元素类型,结点类型和指针类型
2.根据有序表的基本操作的特点,有序表采用双向循环链表实现。

链表设头,尾两个指针和表长数据域,并附设头结点,头结点的数据域存放长整数的正负标志,用0
表示正,用1表示负
3.主函数和其他函数的程序算法
4.函数的调用关系图反映了演示程序的层次结构:
四.调试分析
1.对C语言指针的用法不清,要调用元素结点的数据是出错,
2.使用了标准输入输出函数,开始时没有把头文件包进去,导致许多函数没有定义3.用回车符作为输入结束的标志,开始时没有将处理回车符,导致程序不对。

后调用了函数
4.本程序的模块划分比较合理,且尽可能将指针的操作封装在结点和链表的两个模块中,致使对创建链表函数的调试比较顺利
五.用户手册
1.本程序的运行环境为DOS操作系统,执行文件为:
2.进入演示程序后即显示有提示的用户界面:
3.程序可多次循环直到输入“Q”或”q”,输入结束符为回车符
六.测试结果
(1)输入0和0时输出“0”
(2)输入-2345,6789和-7654,3211时输出“-1,0000,0000”
(3)输入-9999,9999和1,0000,0000,0000时输出“9999,0000,0001”
(4)输入1,0001,0001和-1,0001,0001时输出“0”
(5)输入1,0001,0001和-1,0001,0000时输出“1”
(6)输入-9999,9999,9999和-9999,9999,9999时输出“-1,9999,9999,9998”
(7)输入1,0000,9999,9999和1时输出“1,0001,0000,0000”七.附录
源程序文件名清单:
Dulinklist.h //链表的相关函数
print.h //提示信息的输出及运算后链表的输出
Dulinklist.cpp
long integar.cpp //主程序
print.cpp。

相关文档
最新文档