我有一个点(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);
}
答案 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程序文件中的其他内容。