C程序计算点和线之间的距离

时间:2015-12-09 17:30:04

标签: c line distance point

我有一个点(x1, y1)和一行y = m.x + q。而且,我的任务是找到给定点和线之间的最短距离。

下面是我的C代码。

有人可以帮我处理我的代码吗,因为它给了我一些错误(错误答案)

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

double x1,y1,m,q,distance;

int main () {

    printf ("Enter the coefficient 'm' of the line: \n");
    scanf ("%lf", &m);
    printf ("Enter the coefficient 'q' of the line: \n");
    scanf ("%lf", &q);
    printf ("Enter the value of x1: \n");
    scanf ("%lf", &x1);
    printf ("Enter the value of y1: \n");
    scanf ("%lf", &y1);

    distance = (fabs (y1 - (m * x1 - q))) / (sqrt (1 + m * m));

    printf ("The distance is %.3f \n", distance);
}

1 个答案:

答案 0 :(得分:1)

我猜你在计算点(x1, y1)和线y = m.x + q之间距离的公式时犯了错误。

<强>替换

distance = (fabs (y1 - (m * x1 - q))) / (sqrt (1 + m * m));

使用:

distance = (fabs (y1 - m * x1 - q)) / (sqrt (1 + m * m));

编辑:查看您继续编译错误的原因是因为y1已在math.h标头文件中声明了... Rest of the upper code of math.h header file _CRTIMP double __cdecl j0 (double); _CRTIMP double __cdecl j1 (double); _CRTIMP double __cdecl jn (int, double); _CRTIMP double __cdecl y0 (double); _CRTIMP double __cdecl y1 (double); // y1 is declared here _CRTIMP double __cdecl yn (int, double); _CRTIMP double __cdecl chgsign (double); ... Rest Code 。而且,我想如果我没有错,你必须使用C ++编译器来编译你的代码。

y1

DO:将变量{{1}}的名称更改为C程序文件中的其他内容。