求n维空间点的距离(改进版)

原题描叙:

请见http://blog.csdn.net/liuchang54/article/details/42341053;


代码如下:

#include <stdarg.h>
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
int main()
{
    double distance(int dime,double x1,double y1,double x2=0,double y2=0,double x3=0,double y3=0,double x4=0,double y4=0);
    int dime;
    double x1,y1,x2,y2,x3,y3,x4,y4,d;
    cout<<setiosflags(ios::fixed)<<setprecision(2);
    dime =1;
    cin>>x1>>y1;
    d = distance(dime,x1,y1);
    cout<<d<<endl;
    dime =2;
    cin>>x1>>y1>>x2>>y2;
    d = distance(dime,x1,y1,x2,y2);
    cout<<d<<endl;
    dime =3;
    cin>>x1>>y1>>x2>>y2>>x3>>y3;
    d = distance(dime,x1,y1,x2,y2,x3,y3);
    cout<<d<<endl;
    dime =4;
    cin>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4;
    d = distance(dime,x1,y1,x2,y2,x3,y3,x4,y4);
    cout<<d<<endl;
    return 0;
}

double distance(int dime,double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4)
{
    double sum=0,d[5];  //str[dime]毛病多
    int i=0;
    d[0]=x1-y1;
    d[1]=x2-y2;
    d[2]=x3-y3;
    d[3]=x4-y4;
    while (i<dime)
    {
        sum+=(d[i]*d[i]);
        i++;
    }
    sum=sqrt(sum);
    return sum;
}

运行结果:

之前的代码:


现在的代码:



由于(应该是出题的老师出得有问题)这个题目在OJ上始终无法成功完成,我就把题目和自己写的代码发给了我们上课的贺老师,贺老师也没办法解决无法提交的问题,但他把我写的代码优化了一番,于是便有了这篇博文。之前并不是没有想过利用数组的界限,但因为当时觉得变量数目比较小,就没有多花心思去编写,,,现在想想,如果是20维怎么办?还有很长很长的路要走啊。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值