早教吧作业答案频道 -->其他-->
急急急!C++问题,答好再追加悬赏,帮做一下。多谢大神1复数ADT[问题描述]设计实现抽象数据类型“复数”。[基本要求]实现复数的加法、减法、乘法,以及求复数的实部、虚部等
题目详情
急急急!C++问题,答好再追加悬赏,帮做一下。多谢大神
1
复数ADT
[问题描述]
设计实现抽象数据类型“复数”。
[基本要求]
实现复数的加法、减法、乘法,以及求复数的实部、虚部等基本操作。
[测试数据]
由学生依据软件工程的测试技术自己确定。注意测试边界数据,如复数0。
[实现提示]
用结构体封装与“复数”对应的实部、虚部。
[选作内容]
实现复数的除法运算。
2
有理数ADT
[问题描述]
设计实现抽象数据类型“有理数”。
[基本要求]
实现有理数的加法、减法,以及求有理数的分子、分母等基本操作。
[测试数据]
由学生依据软件工程的测试技术自己确定。注意测试边界数据,如有理数0。
[实现提示]
用结构体封装与“有理数”对应的分子和分母。
[选作内容]
实现有理数的乘法、除法运算。
1
复数ADT
[问题描述]
设计实现抽象数据类型“复数”。
[基本要求]
实现复数的加法、减法、乘法,以及求复数的实部、虚部等基本操作。
[测试数据]
由学生依据软件工程的测试技术自己确定。注意测试边界数据,如复数0。
[实现提示]
用结构体封装与“复数”对应的实部、虚部。
[选作内容]
实现复数的除法运算。
2
有理数ADT
[问题描述]
设计实现抽象数据类型“有理数”。
[基本要求]
实现有理数的加法、减法,以及求有理数的分子、分母等基本操作。
[测试数据]
由学生依据软件工程的测试技术自己确定。注意测试边界数据,如有理数0。
[实现提示]
用结构体封装与“有理数”对应的分子和分母。
[选作内容]
实现有理数的乘法、除法运算。
▼优质解答
答案和解析
头文件:Complex.h
#include
typedef struct {
float real;
float imag;
}Complex;
void InitialComplex(Complex&x,float r,float i)
{ x.real=r;
x.imag=i;
}
float GetReal(Complex x)
{
return x.real;
}
float GetImag(Complex x)
{
return x.imag;
}
void SetReal(Complex &x,float real)
{
x.real=real;
}
void SetImag(Complex &x,float imag)
{
x.imag=imag;
}
Complex add(Complex x,Complex y)
{
Complex z;
z.real=x.real+y.real;
z.imag=x.imag+y.imag;
return z;
}
Complex sub(Complex x,Complex y)
{
Complex z;
z.real=x.real-y.real;
z.imag=x.imag-y.imag;
return z;
}
Complex multi(Complex x,Complex y)
{
Complex z;
z.real=x.real*y.real-x.imag*y.imag;
z.imag=x.real*y.imag+x.imag*y.real;
return z;
}
Complex except(Complex x,Complex y)
{
Complex z;
z.real=(x.real*y.real+x.imag*y.imag)/(y.real*y.real+y.imag*y.imag);
z.imag=(x.real*(-y.imag)+y.real*x.imag)/(y.real*y.real+y.imag*y.imag);
return z;
}
源文件:main.cpp
#include"Complex.h"
void main()
{Complex a,b,c;
float r=0,i=0;
printf("请输入第一个复数的实部,虚部值,用空格隔开:\n");
scanf("%f%f",&r,&i);
InitialComplex(a,r,i);
printf("请输入第二个复数的实部,虚部值,用空格隔开:\n");
scanf("%f%f",&r,&i);
SetReal(b,r);
SetImag(b,i);
printf("第一个复数的实部为:%f,虚部为:%f\n",GetReal(a),GetImag(a));
printf("第二个复数的实部为:%f,虚部为:%f\n",GetReal(b),GetImag(b));
printf("两个复数之和:");
c=add(a,b);
printf("%f %f\n",GetReal(c),GetImag(c));
printf("两个复数乘积:");
c=multi(a,b);
printf("%f %f\n",GetReal(c),GetImag(c));
printf("两个复数之差:");
c=sub(a,b);
printf("%f %f\n",GetReal(c),GetImag(c));
printf("两个复数之商:");
c=except(a,b);
printf("%f %f\n",GetReal(c),GetImag(c));
}
#include
typedef struct {
float real;
float imag;
}Complex;
void InitialComplex(Complex&x,float r,float i)
{ x.real=r;
x.imag=i;
}
float GetReal(Complex x)
{
return x.real;
}
float GetImag(Complex x)
{
return x.imag;
}
void SetReal(Complex &x,float real)
{
x.real=real;
}
void SetImag(Complex &x,float imag)
{
x.imag=imag;
}
Complex add(Complex x,Complex y)
{
Complex z;
z.real=x.real+y.real;
z.imag=x.imag+y.imag;
return z;
}
Complex sub(Complex x,Complex y)
{
Complex z;
z.real=x.real-y.real;
z.imag=x.imag-y.imag;
return z;
}
Complex multi(Complex x,Complex y)
{
Complex z;
z.real=x.real*y.real-x.imag*y.imag;
z.imag=x.real*y.imag+x.imag*y.real;
return z;
}
Complex except(Complex x,Complex y)
{
Complex z;
z.real=(x.real*y.real+x.imag*y.imag)/(y.real*y.real+y.imag*y.imag);
z.imag=(x.real*(-y.imag)+y.real*x.imag)/(y.real*y.real+y.imag*y.imag);
return z;
}
源文件:main.cpp
#include"Complex.h"
void main()
{Complex a,b,c;
float r=0,i=0;
printf("请输入第一个复数的实部,虚部值,用空格隔开:\n");
scanf("%f%f",&r,&i);
InitialComplex(a,r,i);
printf("请输入第二个复数的实部,虚部值,用空格隔开:\n");
scanf("%f%f",&r,&i);
SetReal(b,r);
SetImag(b,i);
printf("第一个复数的实部为:%f,虚部为:%f\n",GetReal(a),GetImag(a));
printf("第二个复数的实部为:%f,虚部为:%f\n",GetReal(b),GetImag(b));
printf("两个复数之和:");
c=add(a,b);
printf("%f %f\n",GetReal(c),GetImag(c));
printf("两个复数乘积:");
c=multi(a,b);
printf("%f %f\n",GetReal(c),GetImag(c));
printf("两个复数之差:");
c=sub(a,b);
printf("%f %f\n",GetReal(c),GetImag(c));
printf("两个复数之商:");
c=except(a,b);
printf("%f %f\n",GetReal(c),GetImag(c));
}
看了 急急急!C++问题,答好再追...的网友还看了以下:
我国已成功研制出一种磁悬浮高速列车,磁悬浮列车是在车辆底部安装电磁铁,在轨道两旁铺设一系列的铝环. 2020-05-15 …
一根长为L的易断的均匀细绳,两端固定在天花板上的A、B两点.在细绳的C处悬一重物,已知AO>OB, 2020-05-21 …
关于对偶反复设问拟人比喻反问对偶反复设问拟人比喻反问的主要特点和作用外加有举例还有就是用以上几种修 2020-06-13 …
学医学或者生物的赶紧来帮个忙,我侄女在考试,给我发了这个大肠杆菌染色体的复制是定点起始,定向复制的 2020-06-20 …
将一单摆装置竖直悬于某一深度为h(未知)且开口向下的固定小筒中(单摆的下部分露出筒外),如图甲所示 2020-06-26 …
轻绳上端悬挂在0点,下端系着质量为M的直木棒的一端,一只质量为m的猴子抓住木棒,减段悬挂木棒的绳子 2020-06-26 …
用复印机复印一张图只时,原图纸上多边形的一条长为1CM的边复印后长变成了4厘米,那么着次复印后设定的 2020-11-13 …
假设一个木板有一半悬空在桌面之外静止,如何分析力矩平衡?如果悬空的部分小于一半呢?支持力的力矩为何 2020-12-01 …
小名暑假开始复习37天他知道不超过60小时就可以复习完每天至少复习一个小时设复习时间为整时 2020-12-06 …
假设一河豚悬浮在水中时受到的浮力是F,吸水后体积膨胀了2倍,则其受到的浮力变为?它在水中将漂浮,悬浮 2020-12-08 …