#include <iostream>
using namespace std;
class Polygon {
private:
int nrVarfuri, x[10], y[10];
public:
Polygon(){}
Polygon(const Polygon &p){}
void show()
{
cout<<"Number of tips: "<<nrVarfuri<<endl;
for(int i=1;i<=nrVarfuri;i++){
cout<<"X ["<<i<<"]="<<x[i]<<endl;
cout<<"Y ["<<i<<"]="<<y[i]<<endl;
}
};
void setValues (int nrVal, int XO[], int YO[]){
nrVarfuri = nrVal;
for(int i=1;i<=nrVal;i++){
x[i]=XO[i];
y[i]=YO[i];
}
};
};
int main ()
{
int poly,i,tips,j;
int x[tips],y[tips];
cout<<"Insert the number of polygons: "<<endl;cin>>poly;
Polygon tabPoligon[poly];
Polygon p;
for(i=0;i<poly;i++){
// cout<<"Insert the number of tips: "<<endl; cin>>tips;
cout<<"Numarul de varfuri: "<<endl; cin>>tips;
for(j=1;j<=tips;j++)
{
cout<<"X["<<j<<"]:";cin>>x[j];
cout<<"Y["<<j<<"]:";cin>>y[j];
}
p.setValues(tips,x,y);
tabPoligon[i]=p;
for(int i=0;i<poly;i++){
cout<<"\n\nThe polygon have the folowing coordinates: "<<endl;
}
tabPoligon[i].show();
}
return 0;
}
我必须插入数字,从键盘插入坐标并打印它们。程序在从键盘读取后显示坐标并且不等待插入另一个多边形坐标,问题是什么?
答案 0 :(得分:1)
您的代码中存在许多问题。两个专业是:
function TwoDimensional(arr, size)
{
var res = [];
for(var i=0;i < arr.length;i = i+size)
res.push(arr.slice(i,i+size));
return res;
}
可能会初始化大小为1或0的数组,int x[tips],y[tips];
Polygon tabPoligon[poly];
应为for(j=1;j<=tips;j++)
(在很多地方)这2个问题足以写出调用未定义行为的数组的实际结束。
修复后,您必须关闭用于加载数据的第一个for(j=0;j<tips;j++)
循环,然后按照alexeykuzmin0在其评论中的建议打开显示数据。
对于数组,快速修复将像在类中一样使用const维度:for(i=0...)
。对于int x[10], y[10]
数组,您可以使用动态分配:
tabPolygon
并且在使用Polygon *tabPoligon = new Polygon[poly];
但C ++方式是在这里使用delete[] tabPoligon;
。