2017-04-05 20 views
2

我創建了一個數字樣本列表以存儲在數組中,我想交換同一列中的元素。輸出不是用於交換相同陣列中的元素的假定輸出

 
1.(200,-400) 
2.(300,-6000) 
3.(400,-125) 
4.(100,-120) 

號碼的第一組將與所述第二組製備1.號(300,-6000)2.(200,-400)3.(400,-125)4.(100互換, -120),那麼第二組數字將與第三組數字交換爲1.(300,-6000)2.(400,-125)3.(200,-400),並且這一直進行到最後一個數組。

但是,我沒有得到我想要得到的輸出......有人可以告訴我什麼是錯的......謝謝。

private void swapButton_Click(object sender, EventArgs e) 
{ 
    double[] b1x = new double[4]; 
    double[] b1y = new double[4]; 
    double[] b2x = new double[4]; 
    double[] b2y = new double[4]; 
    double[,] array = new double[,] 
    { 
     {200,-400}, 
     {300,-6000}, 
     {400,-125}, 
     {100,-120} 
    }; 

    for (int x =0; x < 4; x++) 
    { 
     b1x[x] = array[x, 0]; 
     b1y[x] = array[x, 1]; 

     for (int y = x+1; y < 4; y++) 
     { 
      b2x[x] = array[y, 0]; 
      b2y[x] = array[y, 1]; 
     } 
     array[x, 0] = b2x[x]; 
     array[x, 1] = b2y[x]; 

     for (int w = x+1; w < 4; w++) 
     { 
      array[w, 0] = b1x[x]; 
      array[w, 1] = b1y[x]; 
     } 
    }   
} 
+0

您的要求是什麼?你想在哪裏顯示輸出? –

+0

這是一個所謂的測試程序。所以當它工作時,我會把它帶到主程序。我在MessageBox中顯示它的輸出以檢查它是否正確交換 –

+0

你能解釋更多關於輸出嗎?你要求交換a到b,b到c,c到d。你想存儲哪個變量? –

回答

0

開始陣列:

  • {200,-400}
  • {300,-6000}
  • {400,-125}
  • {100,-120}

結束數組:

  • {300} -6000
  • {400} -125
  • {100} -120
  • {200} -400

爲了得到這個新的數組,你可以使用下面的代碼

private void swapButton_Click(object sender, EventArgs e) 
{ 
    double[] b1x = new double[4]; 
    double[] b1y = new double[4]; 
    double[] b2x = new double[4]; 
    double[] b2y = new double[4]; 
    double[,] array = new double[,] 
    { 
     {200,-400}, 
     {300,-6000}, 
     {400,-125}, 
     {100,-120} 
    }; 

    for (int i = 0; i < 3; i++) 
    { 
     var oldX = array[i, 0]; 
     var oldY = array[i, 1]; 

     var newX = array[i + 1, 0]; 
     var newY = array[i + 1, 1]; 

     array[i, 0] = newX; 
     array[i, 1] = newY; 

     array[i + 1, 0] = oldX; 
     array[i + 1, 1] = oldY; 
    } 
} 
+0

嗨,只是一個快速的qns,但它並沒有爲我工作,當我最初使用i + 1這部分。我可以知道它是如何工作的 –

+0

for語句的結束條件應該是3。首先我寫了4就像你一樣,但是然後i + 1將是4,數組只有0,1,2,3而不是4的值。也許這是你的問題。 – Hank

+0

非常感謝您的幫助!回答了很多我的問題 –

1

我寫了這個控制檯應用程序,可能是這是你在找什麼。這將在每個具有交換值的步驟中打印數組。

 double bx, by; 

     double[,] array = new double[,] 
     { 
     {200,-400}, 
     {300,-6000}, 
     {400,-125}, 
     {100,-120} 
     }; 

     for (var i = 0; i < 4; i++) 
     { 
      Console.Write($"({array[i, 0]}, {array[i, 1]})"); 
     } 

     for (int x = 0; x < 3; x++) 
     { 

      bx = array[x, 0]; 
      by = array[x, 1]; 

      array[x, 0] = array[x + 1, 0]; 
      array[x, 1] = array[x + 1, 1]; 

      array[x + 1, 0] = bx; 
      array[x + 1, 1] = by; 

      Console.WriteLine(); 

      for (var i = 0; i < 4; i++) 
      { 
       Console.Write($"({array[i, 0]}, {array[i, 1]})"); 
      } 

     } 

     Console.ReadKey(); 
-1

@Rachel Chia,我已經重新定義了你的代碼,好心一看。這可能對您有所幫助。

private void swapButton_Click(object sender, EventArgs e) 
    { 
     double[,] array = new double[,] 
      { 
      {200,-400}, 
      {300,-6000}, 
      {400,-125}, 
      {100,-120} 
      }; 
     double[,] b1 = array.Clone() as double[,]; 
     double[,] b2 = array.Clone() as double[,]; 
     double[,] b3 = array.Clone() as double[,]; 
     double[,] b4 = array.Clone() as double[,]; 

     for (int x = 0; x < 4; x++) 
     { 
      switch (x) 
      { 
       case 0: 
        b2[x + 1, 0] = array[x, 0]; 
        b2[x + 1, 1] = array[x, 1]; 

        b3[x + 2, 0] = array[x, 0]; 
        b3[x + 2, 1] = array[x, 1]; 

        b4[x + 3, 0] = array[x, 0]; 
        b4[x + 3, 1] = array[x, 1]; 
        break; 
       case 1: 
        b2[0, 0] = array[x, 0]; 
        b2[0, 1] = array[x, 1]; 

        b3[0, 0] = array[x, 0]; 
        b3[0, 1] = array[x, 1]; 

        b4[0, 0] = array[x, 0]; 
        b4[0, 1] = array[x, 1]; 
        break; 
       case 2: 
        b2[x, 0] = array[x, 0]; 
        b2[x, 1] = array[x, 1]; 

        b3[x - 1, 0] = array[x, 0]; 
        b3[x - 1, 1] = array[x, 1]; 

        b4[x - 1, 0] = array[x, 0]; 
        b4[x - 1, 1] = array[x, 1]; 
        break; 
       case 3: 
        b2[x, 0] = array[x, 0]; 
        b2[x, 1] = array[x, 1]; 

        b3[x, 0] = array[x, 0]; 
        b3[x, 1] = array[x, 1]; 

        b4[x - 1, 0] = array[x, 0]; 
        b4[x - 1, 1] = array[x, 1]; 
        break; 
      } 
     } 
    } 
+0

嗨,感謝您的幫助,但我想用循環代替開關盒 –

+0

如果條件代替開關盒,您不想要嗎? –

+0

我想用於循環 –