Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C++中使用字符数组创建矩阵_C++_Arrays_Matrix - Fatal编程技术网

在C++中使用字符数组创建矩阵

在C++中使用字符数组创建矩阵,c++,arrays,matrix,C++,Arrays,Matrix,我有8个不同的数组,每个数组有8个字符 std::string str_v1 = v1.to_string(); char arr_v1[9] = {0}; std::copy(str_v1.begin(), str_v1.end(), arr_v1); // from str_v1 to str_v8 std::string str_v8 = v8.to_string(); char arr_v8[9] = {

我有8个不同的数组,每个数组有8个字符

        std::string str_v1 = v1.to_string();
        char arr_v1[9] = {0}; 
        std::copy(str_v1.begin(), str_v1.end(), arr_v1); // from str_v1 to str_v8

        std::string str_v8 = v8.to_string();
        char arr_v8[9] = {0}; 
        std::copy(str_v8.begin(), str_v8.end(), arr_v8); 
如何将其转换为8x8矩阵?我想将这些值逐列放置,比如,每个数组都转换为矩阵的一列,比如array1到column1,array2到column2,等等,比如array1的值将被放置为矩阵[0][0],矩阵[1][0],矩阵[2][0]等等。。 我认为,需要这样做:

char matrix[8][8];
        for( int y=0;y<8;y++)
        {
                matrix[y][0] = arr_v1[y];
                matrix[y][1] = arr_v2[y];
                matrix[y][2] = arr_v3[y];
                matrix[y][3] = arr_v4[y];
                matrix[y][4] = arr_v5[y];
                matrix[y][5] = arr_v6[y];
                matrix[y][6] = arr_v7[y];
                matrix[y][7] = arr_v8[y];
        }

你自己说得很对:

for( int y=0;y<8;y++)
        {
            for( int z=0;z<8;z++)
            {
             switch(y)
             {
             case 0:
             matrix[y][z] = arr_v1[z]; //Be pretty sure, possibly you are better than you believe
             break;                    // I've placed y before z as y is the outer loop, hence it 
             case 1:                   // should be responsible for ROWS and z for COLUMNS
             matrix[y][z] = arr_v2[z]; // Goes in matrix[1][0],[1][1],[1][2],[1][3]...[1][7]
             break;
             case 2:
             matrix[y][z] = arr_v3[z]; // Goes in matrix[2][0],[2][1],[2][2],[2][3]...[2][7]
             break;
             case 3:
             matrix[y][z] = arr_v4[z]; // Goes on
             break;
             case 4:
             matrix[y][z] = arr_v5[z]; // And on
             break;
             case 5:
             matrix[y][z] = arr_v6[z]; // And on
             break;
             case 6:
             matrix[y][z] = arr_v7[z];
             break;
             case 7:
             matrix[y][z] = arr_v8[z];
             break;
             }
            }  // Finally all 8 1x8 arrays stored into single 8x8 matrix
        }
希望这有帮助,如果它不只是让我知道,我很乐意帮助

for( int y=0;y<8;y++)
        {
            for( int z=0;z<8;z++)
            {
             switch(y)
             {
             case 0:
             matrix[z][y] = arr_v1[z]; //Be pretty sure, possibly you are better than you believe
             break;                    // I've placed y before z as y is the outer loop, hence it 
             case 1:                   // should be responsible for ROWS and z for COLUMNS
             matrix[z][y] = arr_v2[z]; // Goes in matrix[0][1],[1][1],[2][1],[3][1]...[7][1]
             break;
             case 2:
             matrix[z][y] = arr_v3[z]; // Goes in matrix[0][2],[1][2],[2][2],[3][2]...[7][2]
             break;
             case 3:
             matrix[z][y] = arr_v4[z]; // Goes on
             break;
             case 4:
             matrix[z][y] = arr_v5[z]; // And on
             break;
             case 5:
             matrix[z][y] = arr_v6[z]; // And on
             break;
             case 6:
             matrix[z][y] = arr_v7[z];
             break;
             case 7:
             matrix[z][y] = arr_v8[z];
             break;
             }
            }  // Finally all 8 1x8 arrays stored into single 8x8 matrix
        }

这就是你的方式,每个1x8都是一列,而不是前一行:

听起来像是家庭作业。。。如果是这样,请重新标记您的问题并展示一些工作。您使用的是什么矩阵库?什么,乌布拉斯?MTL?艾根?您正在实现自己的矩阵类吗?还是指内置2D阵列?谢谢。但是,我想要另一种方式。比如,我想逐列插入值,比如arr_v1应该是矩阵的第一列,arr_v2应该是第二列,依此类推,这样arr_v8应该是第八列。@bijlikamasla:然后在每种情况下都翻转Y和Z。是的,谢谢:但是还有一个问题,比如arr_v1上有一个循环……arr_v8,这个循环运行了很多次。我想要的是每次循环运行时向矩阵添加值。你知道怎么可能吗?谢谢:对不起,这次我没听懂,你能再解释一下吗。
char matrix[8][8];
char *arr[8] = {arr_v1, arr_v2, arr_v3, arr_v4, arr_v5, arr_v6, arr_v7, arr_v8};
for( int y=0;y<8;y++) {
    for (int i = 0; i < 8; ++i) {
        matrix[y][i] = arr[i][y];
    }
}
char matrix[8][8];
char *arr[8] = {arr_v1, arr_v2, arr_v3, arr_v4, arr_v5, arr_v6, arr_v7, arr_v8};
for( int y=0;y<8;y++) {
    for (int i = 0; i < 8; ++i) {
        matrix[y][i] = arr[i][y];
    }
}