欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

7-1 数据的间距问题 (20分) -- PTA

程序员文章站 2022-06-08 08:22:28
...

7-1 数据的间距问题 (20分)

复数类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

注意:本博客代码未进行运算符重载(即未完全满足题目要求,但是满足pta所有测试点,也即答案完全正确),而是使用了更容易理解的函数调用;想要获取含有运算符重载的代码,请参考https://www.cnblogs.com/wzzdeblog/p/10828308.html
7-1 数据的间距问题 (20分) -- PTA

#include<iostream>
#include<cmath>
using namespace std;
class Complex{
private:  
	double a, b;
public:
    Complex(){    
        a = 0;    
        b = 0;    
    }    
    Complex(double x, double y){    
        a = x;    
        b = y;    
        }
 };
template < class T >
double dist(T a, T b)
{    
	return abs(a-b);
}
double s(double m1, double m2)
{       
	return pow(abs(m2-m1), 2);
}

int main()
{    
	int n;    
	while(cin >> n, n != 0){     
	   if(n == 1){       
	        int a, b;      
	        cin >> a >> b;            
	        cout << dist(a, b) << endl;        
	    }        
	    else if(n == 2){       
	         float a, b;            
	         cin >> a >> b;            
	         cout << dist(a, b) << endl;        
	    }        
	    else if(n == 3){      
	          double a, b;           
	          double a1, b1, a2, b2;            
	          cin >> a1 >> b1 >> a2 >> b2;            
	          a = s(a1, a2);           
	          b = s(b1, b2);            
	          cout << sqrt(a+b) << endl;        
	     }    
       }
       return 0}

相关标签: c++