[英]C Language - General algorithm to read a square matrix, based on the square number of it's side?
[英]Print square matrix rotations side by side C
我正在研究一個采用方矩陣(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”循環的末尾。
如果只需要打印,可以執行類似的操作
for(int i=0; i<n; ++i)
{
for(int j=0; j<n; ++j)
{
printf("%3d", arr[i][j]);
}
printf("\t");
for(int j=0; j<n; ++j)
{
printf("%3d", arr[n-1-j][i]);
}
printf("\t");
for(int j=n-1; j>=0; --j)
{
printf("%3d", arr[n-1-i][j]);
}
printf("\t");
for(int j=0; j<n; ++j)
{
printf("%3d", arr[j][n-1-i]);
}
printf("\n");
}
其中arr
具有大小為n
的矩陣。
在這里,適當的索引范圍用於從原始矩陣一次打印一行的旋轉版本,而無需修改原始矩陣。
除非您存儲所有4個2D陣列並一次全部打印一次,否則這將非常困難。
另一種(混亂的)想法是使用gotoxy()將光標放置在屏幕上所需的位置,並在旋轉時打印2D數組的元素。 如何將輸入文本光標定位在C中?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.