создать матрицу, используя массивы символов в C ++ - PullRequest
0 голосов
/ 15 февраля 2011

У меня есть 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? Я хочу поместить эти значения столбец за столбцом, например, каждый массив преобразуется в один столбец матрицы, например, массив1 в столбец1, массив2 в столбец2 и т. Д., Как значения массива1 будут размещены как матрица [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];
        }

Ответы [ 4 ]

0 голосов
/ 15 февраля 2011
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];
    }
}
0 голосов
/ 15 февраля 2011

Вы сами были совершенно правы:

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
        }

Надеюсь, это поможет, если это не просто даст мне знать, я буду рад помочь.

0 голосов
/ 15 февраля 2011
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 будет выглядеть как КОЛОННА вместо строки, как в предыдущем:)

0 голосов
/ 15 февраля 2011
char *matrix[9];
for (int i = 0; i < 9; ++i) {
    matrix[i] = new char[9];
    std::copy(your_ith_string.begin(), your_ith_string.end(), matrix[i]);
}
//Finish your work with the matrix
for (int i = 0; i < 9; ++i) {
    delete[] matrix[i];
}
...