Я пишу программу, которая переворачивает двухмерный массив 90, 180 или 270 градусов в зависимости от запросов пользователя. Я вычислил алгоритм для вращения массива (который, как я думал, будет тяжелой), но я столкнулся с проблемой, о которой я никогда не думал, что буду иметь. Следующий код - это фрагмент, который генерирует исходный массив на основе параметров, которые пользователь указывает. Это будет случайным образом сгенерировано, но для устранения неполадок я просто сделал сгенерированный массив постоянно восходящим от 0 до 8 и каждый раз задавал размеры до 3x3 каждый раз, когда я его запускаю.Проблемы с созданием и хранением 2D-массива в C
1: int array_side_length = 3;
2: int x = 0;
3: int y = 0;
4: int original_array[array_side_length][array_side_length];
5: int z = 0;
6:
7: for(x = 0; x < array_side_length; x++){
8: printf("\n");
9: for(y = 0; y < array_side_length; y++){
10: original_array[x][y] = z;
11: z++;
12: printf("%d ", original_array[0][0]);
13: }
14: }
Когда я изменить линию 12, чтобы читать
printf("%d ", original_array[x][y]);
блок кода генерирует следующий массив, как и ожидалось:
0 1 2
3 4 5
6 7 8
... НО при изменении параметров «original_array» на «[0] [0]», я получаю следующее:
0 0 0
3 3 3
6 6 6
Это меня смущает, потому что я ожидал, что код вернет массив всех нулей. Я не вижу, где изменяется значение «original_array [0] [0]».
Вы хотите сделать [Матричная транспозиция] (http://stackoverflow.com/a/16743203/489590)? –
как вы создаете массив (т. Е. Делаете ли вы int original_array [3] [3] или используете malloc?) – Foon
«Я не вижу, где значение« original_array [0] [0] «меняется» - хорошо , * мы * не видим, где 'original_array' * объявлено *. Опубликовать [** MCVE **] (http://stackoverflow.com/help/mcve) – WhozCraig