2015-01-29 4 views
-1

Я пишу программу, которая переворачивает двухмерный массив 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]».

+0

Вы хотите сделать [Матричная транспозиция] (http://stackoverflow.com/a/16743203/489590)? –

+0

как вы создаете массив (т. Е. Делаете ли вы int original_array [3] [3] или используете malloc?) – Foon

+5

«Я не вижу, где значение« original_array [0] [0] «меняется» - хорошо , * мы * не видим, где 'original_array' * объявлено *. Опубликовать [** MCVE **] (http://stackoverflow.com/help/mcve) – WhozCraig

ответ

1

я не смог воссоздать матрицу, установив "original_array" на "[0] [0]",

0 0 0 
3 3 3 
6 6 6 

Однако, я был в состоянии получить результирующую матрицу, установив original_array [ х] [0]. Я хочу догадаться, что вы могли бы скомпилировать следующее вместо [0] [0]? (или, возможно, попытался скомпилировать original_array [0] [0], пропустил ошибку и использовал старый исполняемый файл?)

Смежные вопросы