找出C中两点之间的距离

时间:2016-12-02 18:25:01

标签: c

我想计算两点之间的距离,但我需要使用main函数来完成。我在尝试确保我的程序返回正确的值时遇到了一些困难。我已将我的代码附加到此,所以如果有人可以帮助纠正我可能犯错误的部分,我将不胜感激。 (注意:我对C很新,所以我可能需要一些额外的帮助来理解一些事情。)

nlargest(n, your2DList, key=lambda x: x[-1])

我觉得我的问题是在主函数中使用#include <stdio.h> double distance(double x1, double y1, double x2, double y2) { double square_difference_x = (x2 - x1) * (x2 - x1); double square_difference_y = (y2 - y1) * (y2 - y1); double sum = square_difference_x + square_difference_y; double z = 0.00001; for (double i = 0; i < sum; i = i + z) { if (i * i == sum) { return i; } } } int main(void) { double a = 1.0, b = 2.0, c = 4.0, d = 6.0; double dis; dis = distance(a, b, c, d); printf("The distance of the points (%lf, %lf) and (%lf, %lf) is %lf\n", a,b,c,d,dis); return 0; } 选项发生的,尽管如果有的话我不太确定如何解决这个问题。 `

3 个答案:

答案 0 :(得分:3)

这种方式更好,更有效。

#include <stdio.h>
#include <math.h>

double distance(double x1, double y1, double x2, double y2)
{
    double square_difference_x = (x2 - x1) * (x2 - x1);
    double square_difference_y = (y2 - y1) * (y2 - y1);
    double sum = square_difference_x + square_difference_y;
    double value = sqrt(sum);
    return value;
}

答案 1 :(得分:1)

这只是扩展了Weather Vane关于使用斜边的评论。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>


typedef struct
{
    double x, y;
} Point;

typedef struct
{
    Point a,b;
} Line;


double length( Line line )
{
    return( hypot(line.b.x - line.a.x, line.b.y - line.a.y) );
} 


int main(int argc, char *argv[])
{
    Line line = { {4,0},{0,3} };

    printf("Line length = %lf\n", length(line));
    return( 0 );
}

这显示了众所周知的3,4,5三角形。使用gcc xxx.c -lm

进行编译

答案 2 :(得分:0)

#include <iostream>
#include <math.h>
using namespace std;

int main() {
    int t,i,a,b,c,d,x,y;
    double r;
    cin>>t;
    for(i=0;i<t;i++)
    {
        cin>>a>>b>>c>>d;
        x=abs(a-c);
        y=abs(b-d);

        r=sqrt((x*x)+(y*y));
        if(r-floor(r)>0.500000)
        cout<<ceil(r)<<endl;
        else
        cout<<floor(r)<<endl;
    }
    return 0;
}