復數類Complex有兩個資料成員:a和b, 分別代表復數的實部和虛部,并有若干建構式和一個多載-(減號,用于計算兩個復數的距離)的成員函式。 要求設計一個函式模板
template < class T >
double dist(T a, T b)
對int,float,Complex或者其他型別的資料,回傳兩個資料的間距。
以上類名和函式模板的形式,均須按照題目要求,不得修改
輸入格式:
每一行為一個操作,每行的第一個數字為元素型別,1為整型元素,2為浮點型元素,3為Complex型別,若為整型元素,接著輸入兩個整型資料,若為浮點型元素,接著輸入兩個浮點型資料,若為Complex型元素,輸入兩個Complex型資料(a1 b1 a2 b2),輸入0時標志輸入結束。
輸出格式:
對每個輸入,每行輸出一個間距值。
輸入樣例:
1 2 5
3 2 4 5 9
2 2.2 9.9
0
輸出樣例:
3
5.83095
7.7
uj5u.com熱心網友回復:
#include<iostream>#include<math.h>
using std::endl;
using std::cout;
using std::cin;
class Complex
{
private:
double a;
double b;
public:
Complex() = default;
Complex(double a = 0, double b = 0)
{
this->a = a;
this->b = b;
}
double operator-(Complex c1)
{
double dis;
double x = pow(this->a - c1.a, 2);
double y = pow(this->b - c1.b, 2);
dis = pow(x + y, 0.5);
return dis;
}
};
template<typename T>
double dist(T a, T b)
{
double dis = a - b;
dis = abs(dis);
return dis;
}
int main()
{
int judge;
while (true)
{
cin >> judge;
if (judge == 1)
{
int a, b;
cin >> a >> b;
cout << dist(a, b) << endl;
}
if (judge == 3)
{
double a1, b1, a2, b2;
cin >> a1 >> b1 >> a2 >> b2;
Complex c1(a1, b1), c2(a2, b2);
cout << dist(c1, c2) << endl;
}
if (judge == 2)
{
double a, b;
cin >> a >> b;
cout << dist(a, b) << endl;
}
if (judge == 0)
break;
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/90293.html
標籤:C++ 語言
下一篇:C語言求答案
