我试图创建一个程序,在其中输入两行(a1x + b1和a2x + b2)的系数,并计算它们是否重合,平行或是否相交,它会找到交点。我无法成功地比较系数,程序的输出总是如下:它们在点(0.00,0.00)处相交。我做错了什么?
#include <stdio.h>
#include <math.h>
#define epsilon 0.001
int main() {
float a1, b1, a2, b2;
float x = 0;
float y = 0;
printf("Insert a1,b1,a2,b2: ");
scanf("%f %f %f %f", &a1, &b1, &a2, &b2);
if (fabs(a1 - a2) < epsilon && fabs(b1 - b2) < epsilon) {
printf("Coincident");
} else if (fabs(a1 - a2) < epsilon && fabs(b1 - b2) > epsilon) {
printf("Parallel");
} else if (((fabs(a1 - a2) > epsilon && fabs(b1 - b2) > epsilon) ||
(fabs(a1 - a2) > epsilon && fabs(b1 - b2) < epsilon))) {
x = (b2 - b1) / (a1 - a2);
y = a1 * x + b1;
printf("They intersect at point (%.2f, %.2f)", x, y);
}
return 0;
}