输出如下。我很难过。它的numRows + 2因为我正在添加边框
int** mirrorFramedAry = new int *[numRows+2];
for(int i=0; i<numRows+2; ++i){
mirrorFramedAry[i] = new int[numCols+2];
}
for(int i = 0; i < numRows+2; ++i)
for(int j = 0; j < numCols+2; ++j)
std::cout << mirrorFramedAry[i][j] << " ";
for(int row = 1; row<= numRows; row++){
for(int col = 1; col<= numCols; col++){
int value;
input >> value;
mirrorFramedAry[row][col] = value;
//if(row == 1) mirrorFramedAry[0][col] = value; //mirrors top row
//if(row == numRows) mirrorFramedAry[row+1][col] = value; //mirrors bottom row
}
}
进程已退出,返回值为3221225477 按任意键继续 。 。
答案 0 :(得分:0)
当您使用1作为以下循环中行和列的起始索引时,从第二行和第二列开始填充数据:
for(int row = 1; row<=numRows; row++){
for(int col = 1; col<=numCols; col++){
int value;
input >> value;
//cout <<value<<" ";
mirrorFramedAry[row][col] = value;
}
}
但是,当您使用0作为以下循环中行和列的起始索引时,您将尝试显示从第一行和第一列开始的数据:
for(int i = 0; i < numRows; ++i)
for(int j = 0; j < numCols; ++j)
std::cout << mirrorFramedAry[i][j] << " ";
如果你看到垃圾,那是因为你没有正确初始化第一行和第一列的内容。
您可以通过以下方式解决问题:
答案 1 :(得分:0)
您的初始化循环从索引1
而不是索引0
开始,转到numRows
/ numCols
而不是numRows-1
/ numCols-1
for(int row = 1; row<=numRows; row++){
for(int col = 1; col<=numCols; col++){
int value;
input >> value;
//cout <<value<<" ";
mirrorFramedAry[row][col] = value;
}
}
应该是
for(int row = 0; row<numRows; row++){
for(int col = 0; col<numCols; col++){
int value;
input >> value;
//cout <<value<<" ";
mirrorFramedAry[row][col] = value;
}
}