这是C++语言下的一个对象数组,其中每个对象有两个元素代表横坐标和纵坐标,我要如何取到每个元素的横坐标CPoint pointsC[3] = { {10,20},{8,2},{3,9} };
时间: 2023-11-01 09:27:45 浏览: 67
可以通过点号运算符"."来访问对象的元素,如下所示:
int x1 = pointsC[0].x; // 取第一个元素的横坐标,x1的值为10
int y2 = pointsC[1].y; // 取第二个元素的纵坐标,y2的值为2
int x3 = pointsC[2].x; // 取第三个元素的横坐标,x3的值为3
相关问题
假设有一个点类point,具有两个实数坐标。希望主程序使用这个类完成下述功能: (l)主程序为类point定义10个点的对象数组(也可以动态申请空间)。 (2)要求调用一个函数Set()从键盘输入10个对象的属性。 (3)要求调用一个函数Display()显示10个对象的值。 (4)要求调用一个函数Lenth(),计算将这些点连成一条折线时,这条折线的长度。请用c++实现
下面是基于您的需求的一个完整 C++ 实现方案:
```cpp
#include <iostream>
#include <cmath> // 提供sqrt等数学运算
using namespace std;
// 定义Point类
class Point {
private:
double x; // 横坐标
double y; // 纵坐标
public:
// 设置点的坐标
void Set() {
cout << "请输入x和y坐标 (空格隔开): ";
cin >> x >> y;
}
// 显示点的坐标
void Display() const {
cout << "(" << x << ", " << y << ")";
}
// 获取横坐标
double GetX() const { return x; }
// 获取纵坐标
double GetY() const { return y; }
};
double Length(Point points[], int n) {
double totalLength = 0.0;
for(int i = 1; i < n; ++i){
double dx = points[i].GetX() - points[i-1].GetX();
double dy = points[i].GetY() - points[i-1].GetY();
totalLength += sqrt(dx * dx + dy * dy);
}
return totalLength;
}
int main(){
int numPoints = 10;
// 动态创建对象数组
Point* pointArray = new Point[numPoints];
// 输入所有点的值
cout << "开始设置每个点的坐标:\n";
for(int i=0;i<numPoints;++i){
cout << "第" << i+1 << "个点: \n";
pointArray[i].Set(); // 调用Set函数读取坐标数据
}
// 输出所有点的值
cout << "\n当前所有的点是:\n";
for(int i=0;i<numPoints;++i){
if(i > 0)
cout << "->"; // 连接符增加美观度
pointArray[i].Display();
}
cout << endl;
// 计算折线总长度
double lineLength = Length(pointArray, numPoints);
cout << "由这十个点组成的折线总长为:" << lineLength << endl;
delete[] pointArray; // 删除动态分配的空间
return 0;
}
```
### 解释说明:
1. **`Set()`** 函数用于用户通过键盘输入各个点的具体坐标信息。
2. **`Display()`** 方法可以展示每一个 `Point` 对象的 `(x,y)` 坐标内容。
3. 折线长度的计算在独立函数 `Length()` 中实现,遍历相邻两点并累加它们之间的欧几里得距离。
Description JOI 村有一片荒地,上面竖着N个稻草人。任意两个稻草人的横坐标都不相同,任意两个稻草人的纵坐标都不相同。村民们每年多次在稻草人们的周围举行祭典。 有一次,JOI 村的村长听到了稻草人们的启示,计划在荒地中开垦一片田地。和启示中的一样,田地需要满足以下条件: 1.田地的形状是边平行于坐标轴的长方形; 2.左下角和右上角各有一个稻草人; 3.田地的内部(不包括边界)没有稻草人。 给出每个稻草人的坐标,请你求出有多少个满足条件的田地。 Input 第一行一个正整数N ,代表稻草人的个数。 接下来N行,第 i 行包含 2 个由空格分隔的整数X_i和Y_i,表示第i个稻草人的坐标。 Output 一行,一个整数,表示有多少个满足条件的田地。要求C++实现,且使用scanf函数
解题思路:
首先,题目要求左下角和右上角各有一个稻草人,我们可以用两重循环枚举这两个稻草人,然后确定了左下角和右上角的位置。接下来,我们需要判断这个长方形内是否有其他的稻草人,如果没有,这个长方形就是符合条件的田地。
为了判断是否有其他的稻草人,我们可以用一个布尔数组来表示每个位置是否有稻草人,然后遍历这个长方形内的所有位置,看是否有其中的位置有稻草人即可。
代码实现:
阅读全文
相关推荐















