C++课程实验7.doc_第1页
C++课程实验7.doc_第2页
C++课程实验7.doc_第3页
C++课程实验7.doc_第4页
C++课程实验7.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/*()先读程序,写出程序的输出结果,再运行程序验证程序的输出。用友元重载方式重新编写程序*/#include using namespace std;class Vector public:Vector()Vector(int i,int j) x=i;y=j;friend Vector operator+=(Vector v1,Vector v2) v1.x+=v2.x;v1.y+=v2.y;return v1;friend Vector operator-=(Vector v, Vector u) /Vector temp;/temp.x=x-v.x;/temp.y=y-v.y;/return temp;v.x-=u.x;v.y-=u.y;return v;void display() cout(x,y)endl;private:int x,y;void main()Vector v1(1,2),v2(3,4),v3,v4;v3=v1+=v2;v4=v1-=v2;coutv1=;v1.display();coutv2=;v2.display();coutv3=;v3.display();coutv4=;v4.display();/*()定义一个有理数类,重载比较运算符.写一个完整的程序,进行数据成员的设置和输出*/#includeusing namespace std;class rationalprivate:long denom,den;/denom为分子,den为分母public:rational(int num=0, int denom=1);int operator (rational r) const;int operator = (rational r) const;int operator = (rational r) const;int operator != (rational r) const;/这里增加赋值和读出函数void getdd()cout Enter the denom: denom;cout Enter the den den;void showdd()cout denom = denom endl;cout den = den den = num;this-denom = denom;int rational:operator (rational r) constdouble f1 = denom/den;double f2 = r.denom/r.den;return ( f1 f2 )? 1 : 0;int rational:operator = (rational r) constdouble f1 = denom/den;double f2 = r.denom/r.den;return ( f1 = f2 )? 1 : 0;int rational:operator = (rational r) constdouble f1 = denom/den;double f2 = r.denom/r.den;return ( f1 = f2 )? 1 : 0;int rational:operator != (rational r) constdouble f1 = denom/den;double f2 = r.denom/r.den;return ( f1 != f2 )? 1 : 0;void main()rational rat1;rat1.getdd();rat1.showdd();rational rat2(3,5);rat2.showdd();if ( rat1 rat2 )cout rat1 is less than rat2! endl;else if ( rat1 = rat2 )cout rat1 is less than or equal to rat2! endl;else if ( rat1 = rat2 )cout rat1 is equal to rat2! endl;else cout rat1 is not equal to rat2! endl;/*()设计一个复数类,并重载,/ 和运算符。写完整程序并调试*/#includeusing namespace std;class complex /定义复数类private: /私有数据成员double real; /复数的实部double image; /复数的虚部public: /外部接口complex(double x=0,double y=0) /构造函数real=x;image=y;/分别声明实现四则运算函数的友元函数friend complex operator + ( complex& p1, complex& p2); /重载+运算符friend complex operator - ( complex& p1, complex& p2); /重载-运算符friend complex operator * ( complex& p1, complex& p2); /重载*运算符friend complex operator / ( complex& p1, complex& p2); /重载/运算符friend ostream& operator (ostream &os, complex &c); /重载运算符/*void show( complex& c)cout0)coutc.real+c.imageiendl;elsecoutc.realc.imageiendl;*/;/函数的实现complex operator + ( complex& p1, complex& p2)complex p;p.real = p1.real + p2.real;p.image = p1.image + p2.image;return p;complex operator - ( complex& p1, complex& p2)complex p;p.real = p1.real - p2.real;p.image = p1.image - p2.image;return p;complex operator * ( complex& p1, complex& p2)complex p;p.real = p1.real*p2.real - p1.image*p2.image;p.image = p1.real*p2.image + p1.image*p2.real;return p;complex operator / ( complex& p1, complex& p2)complex p;p.real = ( p1.real*p2.real + p1.image*p2.image ) / ( p2.real * p2.real + p2.image*p2.image);p.image = ( p1.image*p2.real-p1.real*p2.image ) / ( p2.real*p2.real+p2.image*p2.image);return p;ostream& operator0)os(c.real+c.imagei);elseos(c.realc.imagei); return os; void main()double real1,real2,image1,image2;cout输入第一个复数的实部和虚部:real1image1;cout输入第二个复数的实部和虚部:real2image2;coutThe resule is: endl;complex myp1(real1,image1),myp2(real2,image2),myp3,myp4;myp3 = myp1 + myp2; /加法cout myp1 + myp2 = myp3 endl; myp3 = myp1 - myp2; /减法cout myp1 - myp2 = myp3 endl; myp3 = myp1 * myp2; /乘法cout myp1 * myp2 = myp3 endl; myp3 = myp1 / myp2; /除法cout myp1 / myp2 = myp3 endl; /4)用类模板方式设计一个栈类stack,其中有两个私有数据成员:/s(存放栈元素)和top(栈顶元素下标),以及个公有成员函数:/push(元素入栈)、pop(元素出栈)和stackempty(判断栈是否为空),/并建立一个整数栈和一个字符栈。#includeusing namespace std;const int Max=20; template class stackprivate:T sMax;int top;public:stack();void push(T var);/进栈T pop();/出栈int stackempty();/判断是否为空;/-templatestack:stack()top = -1;/-templatevoid stack :push(T var)s+top = var;/-templateT stack:pop()return s top- ;/-templateint stack:stackempty()return (top = -1)? 0:1;int main()stack s1;s1.push(1);s1.push(2);s1.push(3);while(s1.stackempty()couts1.pop()endl;stack s2;s2.push(a);s2.push(b);s2.push(c);while(s2.stackempty()couts2.pop()endl;return 0;/()用函数模板方式设计一个函数模板sort,采用直接插入排序方式对数据进行排序,/并对整数序列和字符序列进行排序。#includeusing namespace std;template void sort(T a, int n)int i,j,temp;for(i=1;in;i+)if(ai ai-1)temp = ai;j = i-1;while(tempaj)aj+1 = aj;j-;aj+1 = temp;int main()int n;int *a;char *b;cout请输

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论