簡體   English   中英

C 反轉數組中的行

[英]C reverse rows in array

我將矩陣表示為一維數組。 例如,數組的大小是 w*h,其中 w 是寬度 ah 是高度,假設矩陣的大小為 4*4

unsigned int new = (w*h)-w;
  unsigned int old = 0;
  for (unsigned int a=0; a< h; a++)
  {
    for (unsigned int b =0; b< w; b++)
    {
      data[new] = input[old];
      old++;
      new++;
    }
    new -= w*2;
  }

它工作得很好,可以倒置我的數組(垂直),但我不知道我應該在代碼中改變什么來水平翻轉數組 - 這將是一些小的變化,但我看不到它

將數組更改為 2d 是可能的,但data是 struct 類型提前謝謝

首先要做的事情:如果你寫更多描述性的話會更好:當前輸入,當前 output 和所需的 output。 我猜,你的代碼是這樣做的:

`input` array

 0  1  2  3 
 4  5  6  7 
 8  9 10 11 
12 13 14 15 

`data` array

12 13 14 15 
 8  9 10 11 
 4  5  6  7 
 0  1  2  3 

我想,你想要得到的是:

 3  2  1  0 
 7  6  5  4 
 11 10 9  8
 15 14 13 12

只需編寫它,您就會看到,您只需要反轉每一行。 因此,您需要反轉input數組的每個 w 元素(因為每個w元素代表一行)。 我認為不需要為此編寫代碼解決方案(您已經擁有的代碼更容易)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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