Цитата(ioManip @ 23.2.2013, 04:54 ) | | Ни как не могу понять, чего хочет от меня компилятор: |
Какой Вы хитрый))) Так инициализация chars не пройдет. chars задана как char**, поэтому
Цитата(ioManip @ 23.2.2013, 04:54 ) | | chars[size_n][size_m] = |
есть присвоение одного элемента (причём за пределами выделенной памяти), а не инициализация всей матрицы.
Тут либо| Код | char chars[size_n][size_m] = { { '#', '#', '#', '.', '.', '.', '?', '?', '.', '+', '.' }, { '#', '#', '#', '.', '=', '.', '?', '?', '.', '+', '.' }, { '#', '#', '#', '.', '.', '.', '.', '.', '.', '+', '.' }, { '.', '.', '.', '.', '.', '.', '.', '.', '.', '=', '=' }, { '.', '.', '.', '.', '.', '.', '.', '.', '.', '=', '=' }, { '.', '.', '.', '.', '.', '.', '#', '#', '#', '=', '=' } };
|
но тогда без явного выделения памяти под массив, либо| Код | char **chars = new char *[size_n]; for( int i = 0; i < size_n; i++) chars[i] = new char [size_m]; char ichars[size_n][size_m] = { { '#', '#', '#', '.', '.', '.', '?', '?', '.', '+', '.' }, { '#', '#', '#', '.', '=', '.', '?', '?', '.', '+', '.' }, { '#', '#', '#', '.', '.', '.', '.', '.', '.', '+', '.' }, { '.', '.', '.', '.', '.', '.', '.', '.', '.', '=', '=' }, { '.', '.', '.', '.', '.', '.', '.', '.', '.', '=', '=' }, { '.', '.', '.', '.', '.', '.', '#', '#', '#', '=', '=' } };
for( int i = 0; i < size_n; i++ ) for( int j = 0; j < size_m; j++ ) chars[i][j] = ichars[i][j];
|
В любом случае, значения size_n и size_m должны оставаться 6 и 11, иначе испортится инициализация массива. То есть для случая 6x11 матрица правильно проинициализируется, для других значений - уже неправильно, а то и не скомпилируется вовсе (если задать меньшие размеры). |