这是我的3D数组迭代。我无法收到所需的样本输出:
输入种子:22 6 11 4 错误。数组索引无效。
我究竟要把cout语句放在“错误。数组索引无效。”?为了匹配上面的输出?
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <ctime>
using namespace std;
int main(){
int seed;
unsigned int x,y,z;
int sum = 0;
// prompt user for seed
cout << "Enter seed: ";
cin >> seed;
// initiate rand function
srand(seed);
int arr[10][10][10];
for(int z = 0; z < 10; z++){
for(int y = 0; y < 10; y++){
for(int x = 0; x < 10; x++){
arr[z][y][x] = rand() % 1000;
}
}
}
cout << "Enter an index for x, y, and z: ";
cin >> x >> y >> z ;
while((x < 1 && x > 10 ) || (y < 1 && y > 10 ) || (z < 1 && z > 10 ) ){
cin >> x >> y >> z;
}
for(unsigned int a = x; a < 10; a++){
sum += arr[a][y][z];
}
for(int j = y + 1; j < 10; j++){
if (y >= 10)
{
cout << "Error. Invalid array index.";
}
else if (y < 10)
{
sum += arr[x][j][z];
}
}
for(int k = z + 1; z < 10; z++){
sum += arr[x][y][k];
}
cout << sum << endl;
return 0;
}
答案 0 :(得分:0)
不是0应该也是有效的,但在你的代码中它不是,所以在我的样本中它也没有。
可能是这样的:
do{
cout << "Enter an index for x, y, and z: ";
cin >> x >> y >> z ;
if((x > 0 && x < 10 ) && (y > 0 && y < 10 ) && (z > 0 && z < 10 ))
break;
else
cout<<"Invalid array index"<<endl;
} while(1);
答案 1 :(得分:0)
你的while循环看起来很可疑。
while((x < 1 && x > 10 ) || (y < 1 && y > 10 ) || (z < 1 && z > 10 ) ){
cin >> x >> y >> z;
}
这些条件都不会成真。你不能让y > 10 && y < 1
成为现实。所以你需要重新考虑这个逻辑。
此外,您的代码严格指定数组在每个级别从0 ... 9(10个元素)建立索引。因此,您需要确保围绕正确的数字进行验证。
while(x < 0 || x >= 10 || y < 0 || y >= 10 || z < 0 || z >= 10) {
cout << "Error. Invalid array index." << endl;
cin >> x >> y >> z;
}