编写c++程序,定义点结构类型: struct Point{ int x; int y; }; 从键盘输入若干个点的数据,存放在结构数组中。函数: int Line(Point ary[], int n); 判断这些点是否在一条水平线或垂直线上。
时间: 2024-12-22 10:12:03 浏览: 5
在C++中,你可以按照以下步骤编写程序来定义一个表示点的结构类型,并从键盘输入数据存储到结构数组中,然后使用一个函数`Line`来判断这些点是否位于同一条水平线或垂直线上:
首先,定义结构体`Point`如下:
```cpp
#include <iostream>
using namespace std;
// 定义点结构类型
struct Point {
int x;
int y;
};
```
接下来,创建一个函数用于从键盘读取并存储点数据:
```cpp
void inputPoints(Point arr[], int &n) {
cout << "请输入点的数量(至少两个): ";
cin >> n;
for (int i = 0; i < n; ++i) {
cout << "请输入第 " << (i + 1) << " 点的坐标 (x, y): ";
cin >> arr[i].x >> arr[i].y;
}
}
```
现在定义`Line`函数来检查是否所有点在同一水平线或垂直线上:
```cpp
bool isVerticalOrHorizontal(const Point &p1, const Point &p2) {
// 如果两点的x坐标相等,则在水平线上
if (p1.x == p2.x)
return true;
// 否则,如果两点的y坐标相等,则在垂直线上
if (p1.y == p2.y)
return true;
// 否则不在同一直线上
return false;
}
int Line(Point ary[], int n) {
bool allSameDirection = true;
for (int i = 1; i < n; ++i) {
if (!isVerticalOrHorizontal(ary[i - 1], ary[i])) {
allSameDirection = false;
break;
}
}
return allSameDirection ? 1 : 0; // 1 表示在同一直线上,0 表示不是
}
```
最后,在主函数中调用上述功能:
```cpp
int main() {
Point points[100]; // 假设最大能输入100个点
int numPoints;
inputPoints(points, numPoints);
int result = Line(points, numPoints);
if (result == 1)
cout << "所有点都在同一直线上。\n";
else
cout << "所有点不在同一直线上。\n";
return 0;
}
```
阅读全文