请 用C++语言设计一个程序包含点类 Po i n t 和一个 线 类 L i n e , L i n e 中 含 有 Po i n t 的 类对象。 L i n e 中有一个 判断 3 个点是 否 在同一 条直线 上的函 数
时间: 2024-05-01 22:19:23 浏览: 69
C#判断点是否在线上(该算法也可适用于C++,java)
好的,我明白了。以下是使用 C 语言设计的程序,包含点类 Point 和线类 Line,Line 类中含有 Point 类对象。Line 类中有一个判断 3 个点是否在同一条直线上的函数。
```
#include <stdio.h>
// 定义点类
typedef struct {
float x;
float y;
} Point;
// 定义线类
typedef struct {
Point point1;
Point point2;
} Line;
// 计算两点之间的斜率
float slope(Point point1, Point point2) {
return (point2.y - point1.y) / (point2.x - point1.x);
}
// 判断 3 个点是否在同一条直线上
int isCollinear(Point point1, Point point2, Point point3) {
float slope1 = slope(point1, point2);
float slope2 = slope(point2, point3);
if (slope1 == slope2) {
return 1; // 三个点在同一条直线上
} else {
return 0; // 三个点不在同一条直线上
}
}
int main() {
Point point1 = {1, 2};
Point point2 = {3, 4};
Point point3 = {5, 6};
Line line = {point1, point2};
printf("Line contains point (%.2f, %.2f) and (%.2f, %.2f)\n", line.point1.x, line.point1.y, line.point2.x, line.point2.y);
int collinear = isCollinear(point1, point2, point3);
if (collinear) {
printf("Point (%.2f, %.2f), (%.2f, %.2f), and (%.2f, %.2f) are collinear\n", point1.x, point1.y, point2.x, point2.y, point3.x, point3.y);
} else {
printf("Point (%.2f, %.2f), (%.2f, %.2f), and (%.2f, %.2f) are not collinear\n", point1.x, point1.y, point2.x, point2.y, point3.x, point3.y);
}
return 0;
}
```
阅读全文