实习0 抽象数据类型

0.1 复数四则运算

一 需求分析

  1. 本演示程序中,需要用户在键盘上输入相应数据和指定程序命令。
  2. 基本要求包括以下六种运算:
  • 由输入的实部和虚部生成一个复数
  • 两个复数求和
  • 两个复数求差
  • 两个复数求积
  • 从已知复数中分离出实部
  • 从已知复数中分离出虚部
  1. 输入格式:

第一行,输入数字(1~6),分别对应上述六种操作。
第二行, a 1    b 1    a 2    b 2 a_1\;b_1\;a_2\;b_2 a1b1a2b2其中 a 1 , a 2 a_1,a_2 a1,a2代表输入复数的实部, b 1 , b 2 b_1,b_2 b1,b2代表输入复数的虚部。

  1. 输出格式:

如第一行输入数字1,则第二行只需输入 a 1    b 1 a_1\;b_1 a1b1,输出格式为 a 1 + i b 1 a_1+ib_1 a1+ib1
如第一行输入数字2-4,则第二行需要输入2组数据,输出格式为运算后的复数。
如第一行输入数字5-6,则第二行只需输入 a 1    b 1 a_1\;b_1 a1b1,输出结果为 a 1 a_1 a1 b 1 b_1 b1

二 概要设计

为实现上述程序功能,需要设计一个抽象数据类型:复数。

ADT Plural {
  数据对象:D={a,b|a,b∈NumSet}
  数据关系:R={}
  基本操作:
    InitPlural(&P)
    操作结果:生成一个复数
    AddPlural(P1,P2,&P3)
    操作结果:返回复数求和
    DelPlural(P1,P2,&P3)
    操作结果:返回复数求差
    MulPlural(P1,P2,&P3)
    操作结果:返回复数求积
    SepReal(P)
    操作结果:返回复数的实部
    SepImag(P)
    操作结果:返回复数的虚部
  } ADT Plural

三 详细设计

实现概要设计中的所有数据类型,对每个操作进行代码编写。

typedef struct Plural
{
	float a; //实部
	float b; //虚部
}Plural;

//初始化一个实部与虚部均为0的复数
Plural InitPlural(Plural& P)
{
	P.a = 0;
	P.b = 0;
	return P;
}

//返回复数P1,P2求和
Plural AddPlural(Plural P1, Plural P2, Plural& P3)
{
	P3.a = P1.a + P2.a;
	P3.b = P1.b + P2.b;
	return P3;
}

//返回复数P1,P2求差
Plural DelPlural(Plural P1, Plural P2, Plural& P3)
{
	P3.a = P1.a - P2.a;
	P3.b = P1.b - P2.b;
	return P3;
}

//返回复数P1,P2求积
Plural MulPlural(Plural P1, Plural P2, Plural& P3)
{
	P3.a = P1.a * P2.a - P1.b * P2.b;
	P3.b = P1.a * P2.b + P1.b * P2.a;
	return P3;
}

//返回复数的实部
float SepReal(Plural P)
{
	return P.a;
}

//返回复数的虚部
float SepImg(Plural P)
{
	return P.b;
}

四 调试分析

内容包括:

  1. 调试过程中遇到的问题以及解决方法
  2. 算法的时空分析
  3. 经验体会
  1. 变量参数标识“&”,作为传址符号, 适用于需要修改原始数据或者希望通过函数返回多个值的情况,可以直接操作原始数据。
  2. 函数较为简单,算法时空复杂度均为O(1)。

五 用户使用说明

  1. 本程序的运行环境为Windows11操作系统,执行文件由Visual Studio2022本地Windows调试器打开。
  2. 按照需求分析所说明的输入格式进行输入,结束符为“回车符”。
  3. 接受不同命令将返回不同结果。
2
5 6 1 3
6+i9

六 测试结果

  • 执行命令1:键入5 6,按下回车后,输出结果5+i6。
  • 执行命令2:键入5 6 1 3,按下回车后,输出结果6+i9。
  • 执行命令3:键入5 6 1 3,按下回车后,输出结果4+i3。
  • 执行命令4:键入5 6 1 3,按下回车后,输出结果-13+i21。
  • 执行命令5:键入5 6,按下回车后,输出结果5。
  • 执行命令6:键入1 3,按下回车后,输出结果3。

七 附录

带注释的源程序。

Plural.cpp

  • 17
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值