簡體   English   中英

並排打印方陣旋轉C

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM