C++一个小程序求解

来源:百度知道 编辑:UC知道 时间:2024/06/17 20:11:49
#include <iostream>
#include <cmath>
using namespace std;
double dis(int,int,int,int);
double dis(int,int,int,int,int,int);
int main()
{
cout<<dis(10,15,13,19)<<endl;
cout<<dis(21,44,2,27,52,3)<<endl;
return 0;
}

double ji(int a,int b)
{
int x=(b-a);
return (x*x);
}
double dis (int a,int b,int c,int d)
{
return sqrt(ji(a,c)+ji(b,d));
}
double dis (int a,int b,int c,int d,int e,int f)
{
return sqrt(ji(a,d)+ji(b,e)+ji(c,f));
}
我是一个普通才学这个语言的大学生,所以高手别就骂我拿这个简单问题来了,我的问题是各位看过这个程序后,我想求比如多维空间的点的距离(假设还是如同现在这样的,平方根下的点的平方和),那么我想利用一维数组,循环和函数的重载来改写,可是水平有限,望高手不吝赐教,写出你们的代码,再次万分感谢

这个,我感觉用一个 变参数的函数 就可以解决,我写了一个,你参考一下吧:

#include<iostream>
#include<cmath>
using namespace std;

double dis(int Dimensions, ...) // Dimensions 代表维度
{
double distance = 0; // 存储距离的平方
int * temp = & Dimensions; // temp指向第一个参数
temp++;
for(int i = 0; i != Dimensions; ++i, temp++ )
{
double Coordinates = *temp - *( temp + Dimensions );
distance += Coordinates * Coordinates;
}
return sqrt( distance ); // 求二次根后返回
}

int main()
{
cout << dis(2,10,15,13,19) << endl;
cout << dis(3,21,44,2,27,52,3) << endl;
return 0;
}

PS: 调用函数时,多加了一个参数表示你要求的距离的所在空间的维度,用于测试的坐标数据沿用你的,你可以跑一下,我跑过,结果正确

悬赏分 0 的问题,太吝啬了吧