2012综合实验四-参考答案(2)

2019-07-31 09:31

}

return 0;

3. 复数类Imaginary(友元函数)

a) 题目描述

根据以下主函数的功能来设计复数类Imaginary,使其能正确运行。类Imaginary中应该具有描述复数的实部和虚部的私有数据成员a和b,还有相应的构造函数和按照“a±bi”格式显示复数的成员函数print()。设计类Imaginary的2个友元函数分别进行复数的加、减运算,并在这些函数调用类Imaginary的成员函数print()显示结果。 int main() {

float x1,y1,x2,y2;

cin>>x1>>y1>>x2>>y2; //输入4个数据,分别表示进行运算的两个复数的实部和虚部

Imaginary imag1(x1,y1),imag2(x2,y2); //用x1、y1创建Imaginary类对象imag1

Add(imag1,imag2); //调用友元函数求两个复数之和,按a±bi的格式显示运算结果(a和b均为实数)

Sub(imag1,imag2); //求两个复数之差并显示运算结果 return 0; } b) 输入描述

输入4个数据,分别表示进行运算的两个复数的实部和虚部 c) 输出描述

2行,分别显示两个复数进行加、减运算的结果 d) 样例输入

1 3 2 5 e) 样例输出

3+8i -1-2i

参考程序:

/******************************************************** 2012 IMIS C++ Practice 4 (Object oriented programming) Task 3

Programmed by YE Huanzhuo Lakeside Nov.28, 2012

********************************************************/ #include

using namespace std;

class Imaginary {

private: float a, b; public: Imaginary(float x, float y):a(x), b(y) {} void print() { if(a) { cout<0) cout<<\ } else if(b==0) { cout<<0; return; } if(b==1) cout<<\ else if(b==-1) cout<<\ else if(b) cout<

void Add(Imaginary c, Imaginary d) { Imaginary e(c.a+d.a, c.b+d.b); e.print(); cout<

void Sub(Imaginary c, Imaginary d) { Imaginary e(c.a-d.a, c.b-d.b); e.print(); cout<

}

int main() {

float x1,y1,x2,y2;

cin>>x1>>y1>>x2>>y2; //输入4个数据,分别表示进行运算的两个复数的实部和虚部

Imaginary imag1(x1,y1),imag2(x2,y2); //用x1、y1创建Imaginary类对象imag1 Add(imag1,imag2); //调用友元函数求两个复数之和,按a±bi的格式显示运算结果(a和b均为实数)

Sub(imag1,imag2); //求两个复数之差并显示运算结果 return 0; }

4. 二进制类(1)——运算符重载

a) 题目描述

将一个16位二进制数表示成0和1的字符序列,即用一个字符数组来存放这个二进制数。在这个类中设置两个构造函数,一个是传递整数参数的,另一个是传递字符串参数的。因为用户在创建对象时传递的二进制数,可能是以整数形式给出,也可能是以数字串形式给出,系统应该都能接受。另外有一个类型转换函数int(),用来将类类型向整型转换。两个重载运算符“+”,“-”,用来完成两个二进制数之间的加减运算。

class binary { //定义二进制类 char bits[16]; //二进制字模数组 public:

binary(char *); //字符串参数构造函数 binary(int); //整型参数构造函数

friend binary operator +(binary,binary); //重载“+” friend binary operator -(binary,binary); //重载“-” operator int(); //类类型转换函数 void print(); };

主函数设计如下: int main() {

binary n1=\ binary n2=int(n1)+15; binary n3=n1-binary(7); n1.print(); n2.print(); n3.print();

cout<

cout<

无 c) 输出描述

略 d) 样例输入

无 e) 样例输出

0000000000001011 0000000000011010 0000000000000100 31 21 9 -1

参考程序:

/******************************************************** 2012 IMIS C++ Practice 4 (Object oriented programming) Task 4

Programmed by YE Huanzhuo Lakeside Nov.28, 2012

********************************************************/ //if the program is judged by OJ, please follow C++ head file standard #include #include //using namespace std;

class binary { //定义二进制类 char bits[16]; //二进制字模数组 public:

binary(char *); //字符串参数构造函数 binary(int); //整型参数构造函数

friend binary operator +(binary,binary); //重载“+” friend binary operator -(binary,binary); //重载“-” operator int(); //类类型转换函数 void print(); };

binary::binary(char *b) { int i, slen=strlen(b); for(i=0; i

binary::binary(int a) { int i=0; while(a) { bits[i++]=a%2; a/=2; //a>>=1; } for(; i<16; i++) bits[i]=0; }

binary::operator int() { int a=0, b=1, i; for(i=0; i<16; i++) { if(bits[i]) a+=b; b<<=1; //b*=2; } return a; }

void binary::print() { int i; for(i=15; i>=0; i--) cout<<(int)bits[i]; cout<

binary operator +(binary x,binary y) {


2012综合实验四-参考答案(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:“小学生学习对联,提高语文素养” 实验报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: