编程,输入平面上n(3<n<=10)个点的坐标,计算各点之间的距离之和。 写出程序,及结果,最好自己已运算验证
发布网友
发布时间:2022-05-04 10:44
我来回答
共1个回答
热心网友
时间:2023-10-22 06:02
/**
* Calculate the length between two points
* @param [number] x1,y1,x2,y2
* @return [number]
*/
function getLength(x1,y1,x2,y2){
return Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}
/**
* @param [array] arr
* @return [number]
*/
function calculation(arr){
var total = 0;//最终结果
var len = arr.length;//计算传入有几个点
/*当只有一个点时,计算该点到原点的距离*/
if(len == 1) {
return getLength(0,0,arr[0][0],arr[0][1]).toFixed(2);
}
/*计算过程是:取第一个点,计算它与其它点的线段长总和,然后删除此点,再计算下一个点与其它点的线段长总和并累加上一次的计算结果.....重复计算直至只剩一个点*/
do{
for(var i = 1;i<len;i++){//设置i=1,即设第二点开始
total += getLength(arr[0][0],arr[0][1],arr[i][0],arr[i][1]);//获取每段线段长并累加
}
arr.shift();//删除取得所有线段长度的点
len = arr.length;//计算剩余的点数
}while(len > 1)//如果剩余点数不足2点时,停止计算
/*核心部分 结束*/
return total.toFixed(2);//将结果格式化后返回
}
calculation([[0,0],[1,1],[2,2]]);//示例调用,参数为由点坐标构成的二维数组
很不好意思,我不会c++,我把核心的计算过程贴一下给你看吧。其中第一个函数是计算两个点之间的距离,第二个函数是处理坐标集,其余函数调用的都是javascript自带的函数,看不明白的再发问。(我去瞄瞄c++...)
热心网友
时间:2023-10-22 06:02
/**
* Calculate the length between two points
* @param [number] x1,y1,x2,y2
* @return [number]
*/
function getLength(x1,y1,x2,y2){
return Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}
/**
* @param [array] arr
* @return [number]
*/
function calculation(arr){
var total = 0;//最终结果
var len = arr.length;//计算传入有几个点
/*当只有一个点时,计算该点到原点的距离*/
if(len == 1) {
return getLength(0,0,arr[0][0],arr[0][1]).toFixed(2);
}
/*计算过程是:取第一个点,计算它与其它点的线段长总和,然后删除此点,再计算下一个点与其它点的线段长总和并累加上一次的计算结果.....重复计算直至只剩一个点*/
do{
for(var i = 1;i<len;i++){//设置i=1,即设第二点开始
total += getLength(arr[0][0],arr[0][1],arr[i][0],arr[i][1]);//获取每段线段长并累加
}
arr.shift();//删除取得所有线段长度的点
len = arr.length;//计算剩余的点数
}while(len > 1)//如果剩余点数不足2点时,停止计算
/*核心部分 结束*/
return total.toFixed(2);//将结果格式化后返回
}
calculation([[0,0],[1,1],[2,2]]);//示例调用,参数为由点坐标构成的二维数组
很不好意思,我不会c++,我把核心的计算过程贴一下给你看吧。其中第一个函数是计算两个点之间的距离,第二个函数是处理坐标集,其余函数调用的都是javascript自带的函数,看不明白的再发问。(我去瞄瞄c++...)
热心网友
时间:2023-10-22 06:02
/**
* Calculate the length between two points
* @param [number] x1,y1,x2,y2
* @return [number]
*/
function getLength(x1,y1,x2,y2){
return Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}
/**
* @param [array] arr
* @return [number]
*/
function calculation(arr){
var total = 0;//最终结果
var len = arr.length;//计算传入有几个点
/*当只有一个点时,计算该点到原点的距离*/
if(len == 1) {
return getLength(0,0,arr[0][0],arr[0][1]).toFixed(2);
}
/*计算过程是:取第一个点,计算它与其它点的线段长总和,然后删除此点,再计算下一个点与其它点的线段长总和并累加上一次的计算结果.....重复计算直至只剩一个点*/
do{
for(var i = 1;i<len;i++){//设置i=1,即设第二点开始
total += getLength(arr[0][0],arr[0][1],arr[i][0],arr[i][1]);//获取每段线段长并累加
}
arr.shift();//删除取得所有线段长度的点
len = arr.length;//计算剩余的点数
}while(len > 1)//如果剩余点数不足2点时,停止计算
/*核心部分 结束*/
return total.toFixed(2);//将结果格式化后返回
}
calculation([[0,0],[1,1],[2,2]]);//示例调用,参数为由点坐标构成的二维数组
很不好意思,我不会c++,我把核心的计算过程贴一下给你看吧。其中第一个函数是计算两个点之间的距离,第二个函数是处理坐标集,其余函数调用的都是javascript自带的函数,看不明白的再发问。(我去瞄瞄c++...)