读取两个坐标点打印连接点的直线方程
Posted
技术标签:
【中文标题】读取两个坐标点打印连接点的直线方程【英文标题】:Read two coordinate points print the equation of line joining the points 【发布时间】:2022-01-22 04:29:53 【问题描述】:#include<stdio.h>
main()
int x1,y1,x2,y2,c,y,x;
float m;
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
printf("the two cordinate points are <%d,%d> and <%d,%d>",x1,y1,x2,y2);
if(m=y2-y1/x2-x1)
y=m*x+c;
c=y-m*x;
printf("the equation of a straight line is y=mx+c");
else printf("no equation");
return 0;
我没有得到答案。我想我在表达斜率或常数项时遇到了麻烦。你能[帮忙吗?]
【问题讨论】:
【参考方案1】:设置m
的行有两个问题:
y1/x1
,然后再执行其他操作。
将该行放在if
语句中是不寻常的,因为看起来您可能正在尝试进行比较;让我们把它放在自己的位置上。
由于m
是浮点数,您可能希望进行浮点除法而不是整数除法。
将这些信息放在一起,我们得到这条线来计算斜率:
m = (float)(y2 - y1) / (x2 - x1);
现在我认为我们应该删除if
语句和与之对应的else
子句。零斜率没有理由必须是导致程序终止的特殊情况。
继续下一行。 x
未初始化,因此请注释掉从中读取的行。编译器应该已经警告过你,所以请确保你的编译器警告已启用,并且你阅读了它们,并修复了它们。
// y = m * x + c
// c = y - m * x
要计算c
,我认为您要运行的行是:
c = y1 - m * x1;
(您同样可以使用y2
和x2
。)
然后你只需要添加一行打印m
和c
。您已经知道如何使用 printf
打印整数,因为您之前在程序中打印了 4 个整数,所以只需添加另一行,例如打印 m
和 c
。
【讨论】:
m = (y2 - y1) / (x2 - x1);
将不起作用(它是 indeter 除法)。你需要m = (float)(y2 - y1) / (x2 - x1);
我有一个疑问,什么时候使用 if 条件我很困惑,因为我在这段代码中犯了一个错误
您可能希望有一个if
语句来检查是否x1 == x2
,这样您就可以避免除以零。否则我认为你不需要它。以上是关于读取两个坐标点打印连接点的直线方程的主要内容,如果未能解决你的问题,请参考以下文章