无法打印伪多维数组

时间:2015-10-24 16:17:22

标签: c++ arrays multidimensional-array

我正在尝试打印一个伪多维数组(不要问为什么是XD),但出于某种原因,当我这样做时

#include <iostream>

#define Row_sz 3
#define Col_sz 4

using namespace std;

int main()
{
    int row, col;
    int arr[Row_sz*Col_sz];

    cout<<"Printing a multi-dimensional array."<<endl;
    do{
        cout<<"Enter the number of rows: "<<endl;
        cin>>row;
    }while(row>Row_sz||row<0);
    do{
        cout<<"Enter the number of columns: "<<endl;
        cin>>col;
    }while(col>Col_sz||col<0);

    for (int x=0;x<row;x++){
        for(int y=0;y<col;y++){
            cout<<"Enter the value: "<<endl;
            cin>>arr[x*y];
        }

    }
    cout<<"The array matrix: "<<endl;
    for (int x=0;x<row;x++){
        for(int y=0;y<col;y++){
            cout<<arr[x*y]<<" ";
        }
        cout<<endl;
    }
}

如果我输入例如:5,4,3,2,1,6,7,8,9,11,12,13我得到

                                                         9 9 9 9
                                                         9 6 11 8
                                                         9 11 12 13

而不是:

                                                 5 4 3 2
                                                 1 6 7 8
                                                 9 11 12 13

或类似的东西。

1 个答案:

答案 0 :(得分:1)

替换

 x*y

x*Col_sz+y

*运算符是乘法。你的数组长12个元素。你想要填写元素0,1,2,3,4,5,6 ...... 11.如果你看看x*y产生什么,你会发现这不是你想要的。