【发布时间】:2018-08-13 11:34:32
【问题描述】:
我正在开发一个函数,该函数采用方阵(2D 数组),以 90 度的步长将其旋转,然后打印所有 4 次旋转。我一直在做的是并排打印这些旋转,而不是直接打印在彼此下方。 鉴于下面显示的第一个矩阵,这就是我能够产生的:
123
123
123
111
222
333
321
321
321
333
222
111
我想要实现的目标:
123 111 321 333
123 222 321 222
123 333 321 111
非常感谢任何有关如何处理它的帮助,因为我已经死了并且无法工作。
代码:
//get transformation of matrix
for(num_rotations = 0;num_rotations < 3;num_rotations++){
for(row=0;row<num_rows;row++){
for(col=0;col<3;col++){
temp_arr[row][col] = working_arr[col][row];
}
}
}
在第一个“for”循环内,然后重复第二个和第三个“for”循环,最后一行替换为:
working_arr[row][col] = temp_arr[row][3-col-1];//reverse columns for a single rotation
打印语句放置在第一个“for”循环的末尾。
【问题讨论】:
-
您的示例代码在哪里?
-
我认为它就像在某处添加另一个或两个循环一样简单......但我真的不知道从哪里开始。
-
先计算,再打印。
-
除非您想不断地重新计算旋转矩阵,否则您需要收集完整的 4 个矩阵。然后您可以逐步遍历 4 个矩阵,将每个矩阵的第一行打印在一行上,每一行的第二行放在下一个,以此类推。您可以根据需要重新计算每次旋转,但是……嗯,有一个时空权衡。对于小型矩阵,重新计算可能无关紧要;对于中等矩阵,计算一次就成为一种好处,直到矩阵太大以至于存储所有 4 个矩阵都是有问题的。
标签: c arrays multidimensional-array