资源预览内容
第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1、编写一个程序,要求: (1) 生明一个类 Complex(复数类) , 定义类 Complex 的两个对象 c1 和 c2, 对象 c1 通过构造函数直接指定复数的实部和虚部(类私有数据成员为 double 类 型:real 和 imag)为 2.5 及 3.7,对象 c2 通过构造函数直接指定复数的实部和虚 部为 4.2 及 6.5; (2)定义友元运算符重载函数,它以 c1、c2 对象为参数,调用该函数时能 返回两个复数对象相加操作; (3)定义成员函数 print,调用该函数时,以格式“real+imag i”输出当前 对象的实部和虚部,例如:对象的实部和虚部分别是 4.2 和 6.5,则调用 print 函 数输出格式为:4.2+6.5 i; (4)编写主程序,计算出复数对象 c1 和 c2 相加结果,并将其结果输出。 #include using namespace std; class Complex public: Complex(double r=0.0,double i=0.0); friend Complex operator+ (Complex void printf(); private: double real; double imag; ; Complex:Complex(double r,double i) real=r; imag=i; Complex operator+ (Complex temp.real=a.real+b.real; temp.imag=a.imag+b.imag; return temp; void Complex:printf() cout0) cout+; if(imag!=0) coutimagiendl; void main() Complex c1(2.5,3.7),c2(4.2,6.5),c3; c3=c1+c2; c3.printf(); 2、编写一个程序,其中设计一个时间类 Time,用来保存时、分、秒等私有 数据成员,通过重载操作符“+”实现两个时间的相加。要求将小时范围限制在 大于等于 0,分钟范围限制在 059 分,秒钟范围限制在 059 秒。 提示:时间类 Time 的参考框架如下: class Time public: Time(int h=0,int m=0,int s=0);/构造函数 Time operator+(Time /运算符重载函数,实现两个时间的相加 void disptime();/显示时间函数 private: int hours,minutes,seconds; ; #include using namespace std; class Time public: Time(int h=0,int m=0,int s=0);/构造函数 Time operator+(Time /运算符重载函数,实现两个时间的相加 void disptime();/显示时间函数 private: int hours; intminutes; int seconds; ; Time:Time(int h,int m,int s) hours=h; minutes=m; seconds=s; Time Time:operator+(Time s=(t.seconds+seconds)%60; m=(minutes+t.minutes+(t.seconds+seconds)/60)%60; h=hours+t.hours+(minutes+t.minutes+(t.seconds+seconds)/60)/60; hours=h; minutes=m; seconds=s; return *this; void Time:disptime() couthours:minutes:seconds.endl; void Input(int cinm ; cins ; while(m59|s59) cout*时间输入错误!请重新输 !*n; couth ; cinm ; cins ; int main() int h1,m1,s1,h2,m2,s2; Input(h1,m1,s1); Input(h2,m2,s2); Time A(h1,m1,s1),B(h2,m2,s2); A=A+B ; A.disptime(); return 0; 3、用友元运算符函数或成员运算符函数,重载运算符“+” 、 “-” 、 “*” ,实 现对实验二中实现的矩阵类的对象的加、减、乘法。 #include #define hang 2 #define lie 2 class Matrix private: int Row; int Column; int MATRIXhanglie; public: Matrix(int r,int c) Row=r; Column=c; Matrix() void TypeMatrix(); void Print() const; Matrix Matrix operator + (const Matrix Matrix operator - (const Matrix ; void Matrix:TypeMatrix() std:cout请输入矩阵:std:endl; for(int i=0;ihang;i+) for(int j=0;jMATRIXij; void Matrix:Print() const std:cout矩阵的结果为:std:endl; for(int q=0;qhang;q+) for(int s=0;slie;s+) std:coutMATRIXqst; if(s=lie-1) std:coutstd:endl; Matrixghang;g+) for(int h=0;hMATRIXgh=rhs.MATRIXgh; return *this; Matrix Matrix:operator + (const Matrix for(i=0;ihang;i+) for(j=0;jMATRIXij+rhs.MATRIXij; return *this ; Matrix Matrix:operator - (const Matrix for(i=0;ihang;i+) for(j=0;jMATRIXij-rhs.MATRIXij; return *this ; int main() Matrix a,b,c,d; a.TypeMatrix(); b.TypeMatrix(); c=a+b; c.Print(); d=a-b; d.Print(); 4、 编写一个程序, 用于进行集合的和、 并和交运算。 例如输入整数集合9,5,4, 3,6,7和2,4,6,9,计算出他们进行集合的并、差和交运算后的结果。 【提示】 (1)可以用一下表达式实现整数集合的基本运算: s1+s2 两个整数集合的并运算 s1-s2 两个整数集合的差运算 s1*s2 两个整数集合的交运算 (2)参考以下 Set 类的框架,用于完成集合基本运算所需的各项功能。 class Set public: Set(); void input(int d);/向集合中添加一个元素 int length();/返回集合中的元素个数 int getd(int i);/返回集合中位置 i 的元素 void display();/显示集合的所有元素 Set operator+(Set s1);/成员运算符重载函数,实现集合的并运算 Set operator-(Set s1);/成员运算符重载函数,实现集合的差运算 Set operator*(Set s1);/成员运算符重载函数,实现集合的交运算 Set operator=(Set s1);/成员运算符重载函数,实现集合的赋值运算 protected: int len;/统计结合中元素的个数; int sMAX;/存放集合中的元素 ; #include using namespace std; const int MAX = 50; class set public: set(); void input(int d); int length(); int getd(int i); void disp(); set operator+(set s1); set operator-(set s1); set operator*(set s1); set operator=(set s1); protected: int len; int sMAX; ; set:set() len = 0; /s =0; cout *建立一个集合*n; void set:input(int d) len = d; cout 输入集合元素 d 个:; for(int i = 0; i si ; int set:length() int n=0; while(sn != 0) n+; return n; int set:getd(int i) return 0; void set:disp() for (int i = 0; i len; i+) cout si ; /cout endl; set set:operator+(set s1) /-并运算- /strcat(s,s1.s); for (int i = 0; i len; i+) for(int j = 0; j s1.len; j+) /在 s1.s中选出不相同的 if(si = s1.sj) /选出相同的元素删掉得到 s1.s 与 s 不同的元素 for (;j s1.len; j+) s1.sj = s1.sj+1; -s1.len; for (int j = 0;j s1.len; j+ ) / 将 s1.s中不相同的加在 s后面 slen = s1.sj; len+; slen+s1.len = 0; return *this; set set:operator-(set s1) /-差运算- int t; for (int i = 0; i s1.len; i+) for(int j = 0; j len; j+) if(s1.si = sj ) /选出 s 与 s1.s 中相同的元素并且删除掉 t = j; for (;t len; t+) st = st+1; -len; return *this; set set:operator*(set s1) / -交运算- int mMAX; int l = 0; for (int i = 0; i s1.len; i+) for(int j = 0; j len; j+) / 选出相同的元素 if(s1.si = sj) ml = sj; l+; for (
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号