C++实验四

匿名 (未验证) 提交于 2019-12-02 23:36:01

1.定义一个复数类Complex,重载运算符“+”、“-”、“*”、“-”“==”,使之能用于复数的加、减、乘、求反以及比较的等运算。要求分别重载运算符函数为Complex类的成员函数和非成员函数(友元函数)。在主函数中进行测试。

#include <iostream> #include <cstdio> using namespace std;  class Complex {     public:       Complex(){}       Complex(double r, double i){ real = r; img = i;}       Complex operator+(const Complex &a);       Complex operator-(const Complex &a);       bool operator==(const Complex &a);       void display() 	  { 	      printf(" %f%+fi\n", real, img);       }       friend Complex operator*(const Complex &a, const Complex &b);       friend Complex operator-(const Complex &a);     private:       double real;       double img; }; int main() { 	double a1, a2, b1, b2; 	bool flag = 1; 	cin>>a1>>a2>>b1>>b2;     Complex a(a1, a2);     Complex b(b1, b2);     Complex c;          cout<<"a =";     a.display();     cout<<"b =";     b.display();          c = a + b;     cout<<"a + b =";     c.display();          c = a - b;     cout<<"a - b =";     c.display();      	c = a * b; 	cout<<"a * b =";     c.display();          	c = -b; 	cout<<"-b =";     c.display();      	flag = (a==b);     if(flag==1) cout<<"a==b"<<endl;     else cout<<"a!=b"<<endl;     return 0; } Complex Complex::operator+(const Complex &a) {     Complex c(real+a.real, img+a.img); 	return c; } Complex Complex::operator-(const Complex &a) {     Complex c(real-a.real, img-a.img); 	return c; } bool Complex::operator==(const Complex &a) { 	if(real==a.real && img==a.img) 	  return true; 	else 	  return false; }   Complex operator*(const Complex &a, const Complex &b) {     Complex c(a.real*b.real-a.img*b.img,  			  a.real*b.img+a.img*b.real); 	return c; } Complex operator-(const Complex &a) {     Complex c(-a.real, -a.img); 	return c; } 

2.声明Point类,有坐标x和y两个成员变量;对Point类重载“++”“--”自增、自减(前置、后置)运算符,实现对坐标值的改变。

#include <iostream> using namespace std;  class Point {     public:       Point(){}       Point(int xx, int yy):x(xx), y(yy){}       Point &operator++();       Point operator++(int);       Point &operator--();       Point operator--(int);       void showP() const       {         cout<<"( "<<x<<" , "<<y<<" )"<<endl;       } 	private:	 	  int x; 	  int y; };  int main() {     int x1, y1, x2, y2;     cin>>x1>>y1>>x2>>y2;     Point a(x1, y1); 	Point b(x2, y2); 	 	cout<<"a   : "; 	a.showP(); 	cout<<"b   : "; 	b.showP(); 	 	cout<<"++a : "; 	(++a).showP(); 	cout<<"a   : "; 	a.showP(); 	 	cout<<"b++ : "; 	(b++).showP(); 	cout<<"b   : "; 	b.showP(); 	 	cout<<"a-- : "; 	(a--).showP(); 	cout<<"a   : "; 	a.showP(); 	 	cout<<"--b : "; 	(--b).showP(); 	cout<<"b   : "; 	b.showP(); 	     return 0; }  Point & Point::operator++() {     x++;     y++;      return *this; } Point Point::operator++(int) { 	Point old = *this; 	++(*this);      return old; } Point & Point::operator--() {     x--;     y--;      return *this; } Point Point::operator--(int) { 	Point old = *this; 	--(*this);      return old; }  

3.设计一个一维的int数组类IntArray(属性:下标下限、下标上限、int型指针),可以任意指定下标范围(初始化时要判断下标是否正确),并重载下标访问运算符“[]”实现数组类的下标访问。在主函数中(创建一个下标1-10的数组对象,初始化并输出)进行测试。

#include <iostream> using namespace std;  class IntArray {     public:       IntArray(int l, int h):low(l), high(h) 	  { 	      int size = high-low+1; 		  p = new int [size]; 	  	  for(int i=0;i<size;i++) 	        { 	  	      p[i] = 0; 	        } 	  } 	  IntArray(int l, int h, int *a):low(l), high(h) 	  { 	      int size = high-low+1; 		  p = new int [size]; 	  	  for(int i=0;i<size;i++) 	        { 	  	      p[i] = a[i]; 	        } 	  }  	  void setArray(int i, int n);       int operator[](int n);     private:       int low;       int high;       int *p; };  int main() {     IntArray a(1, 10);     for(int i=1;i<=10;i++)        cout<<a[i]<<" ";     cout<<endl;     for(int i=1;i<=10;i++)        a.setArray(i, i);     for(int i=1;i<=10;i++)        cout<<a[i]<<" ";     cout<<endl;     int b[5] = {6, 7, 8, 9, 10}; 	IntArray c(10, 14, b); 	for(int i=10;i<=14;i++)        cout<<c[i]<<" ";     cout<<endl;     return 0;	 }  int IntArray::operator[](int i) {     return p[i-low]; } void IntArray::setArray(int i, int n) {     p[i-low] = n; }

 

转载请标明出处:C++实验四
文章来源: https://blog.csdn.net/baidu_41883884/article/details/90710011
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!