设计基本图形类
类点CPt、 线(CLn);点是线的成员数据,用 vector 容器,在线上实现如下操作:
(1)在 p 位置前加入新点。
(2)删除 p 位置的点。
(3)修改 p 点的坐标。
(3)返回点数。
(p是传入的序号参数)
随便写了写,大概这个意思吧,你自己调一下看看
#include<iostream>
#include<vector>
using namespace std;
class CPt
{
public:
int x;
int y;
};
class CLn
{
vector<CPt> pvec;
public:
bool InsertP(int p, CPt inp)
{
if (p>= pvec.size() && pvec.size() > 0) return false;
if (pvec.size() == 0)
{
pvec.push_back(inp);
}
else
{
vector<CPt>::iterator ite;
int i=0;
for(ite=pvec.begin();ite!=pvec.end();++ite)
{
if(p == i)
{
pvec.insert(ite,inp);
break;
}
i++;
}
}
}
bool DeleteP(int p)
{
if (p>= pvec.size()) return false;
vector<CPt>::iterator ite;
int i=0;
for(ite=pvec.begin();ite!=pvec.end();)
{
if(i==p)
ite=pvec.erase(ite);
else
++ite;
i++;
}
}
bool ModifyP(int p, CPt inp)
{
if (p>= pvec.size()) return false;
pvec[p] = inp;
return true;
}
int GetCount()
{
return pvec.size();
}
};
int main()
{
CLn Line;
CPt p1,p2,p3;
cout<<"插入三个点"<<endl;
p1.x = 1;
p1.y = 2;
Line.InsertP(0, p1);
p2.x = 2;
p2.y = 4;
Line.InsertP(0, p2);
p3.x = 3;
p3.y = 6;
Line.InsertP(0, p3);
cout<<"当前点数量"<< Line.GetCount() <<endl;
Line.DeleteP(1);
cout<<"删除一个点后数量"<< Line.GetCount() <<endl;
p1.x = 10;
p1.y = 20;
Line.ModifyP(0, p1);
return 0;
}