2016-10-21 4 views
-4

ユーザーからセカンダリ配列の入力を行い、それらの番号を昇順にしたい昇順を低くする、間違ったものを見つけることができない このコードを配列で1つの要素簡単ですが、私はこの2つの要素で昇順にしたいです。C# - 昇順の2次配列を作成する

class Program 
    { 
     static void Main(string[] args) 
     { 
      int[,] Matrice = new int[2, 3]; 
      int i, j, m, n, temp; 

      for (i = 0; i < 2; i++) 
      { 
       for (j = 0; j < 3; j++) 
       { 
        Console.WriteLine("Enter The Number :(" + i + "," + j + ")"); 
        Matrice[i, j] = int.Parse(Console.ReadLine()); 
       } 
      } 

      for (i = 0; i < 2; i++) 
       for (j = 0; j < 3; j++) 

      for (m = i + 1; m < 2; m++) 
       for (n = j + 1; n < 3; n++) 

      if (Matrice[i, j] > Matrice[m,n]) 
      { 
       temp = Matrice[i,j]; 
       Matrice[i, j] = Matrice[m, n]; 
       Matrice[m, n] = temp; 
      } 

      for (i = 0; i <2; i++) 
      { 
       for (j = 0; j <3; j++) 
       { 
        Console.WriteLine("Ascending from low to high :(" + i + "," + j + ") est " + Matrice[i, j]); 
       } 
      } 
      Console.ReadKey(); 
     } 
    } 

私の出力は、そのような間違った私のコードです

です:

Enter The Number :(0,0) 
5 
Enter The Number :(0,1) 
3 
Enter The Number :(0,2) 
8 
Enter The Number :(1,0) 
15 
Enter The Number :(1,1) 
3 
Enter The Number :(1,2) 
9 
Ascending from low to high :(0,0) est 3 
Ascending from low to high :(0,1) est 3 
Ascending from low to high :(0,2) est 8 
Ascending from low to high :(1,0) est 15 
Ascending from low to high :(1,1) est 5 
Ascending from low to high :(1,2) est 9 

私は助けることが:)

+3

これは現時点では非常に良い質問ではありません。コードをダンプして「それは動作しません」と言っているからです。デバッガで問題の原因を絞り込み、それについて質問する必要があります。また、単にOrderByを使用することを検討してください – BradleyDotNET

+0

私は英語で良くないです。ごめんなさい –

答えて

0

まず、あなたがの第二部の最初の項目をスキップする必要がありますあなたがi + 1で始まるので、配列。あなたは、各要素を歩くとそれを比較するので、ちょうど使用したい:

for (m = 0; m < 2; m++) 
    for (n = 0; n < 3; n++) 
第二に、あなたは値が昇順になりたい、あなたの現在のコードは、降順のソートされます。この問題を解決するには、単に変更「>」「<」

if (Matrice[i, j] < Matrice[m, n]) 

に積み重ねられたforループ次のようになります:私はあなたの質問を理解していれば、あなたが欲しいものを行う必要があります

for (i = 0; i < 2; i++) 
      for (j = 0; j < 3; j++) 
       for (m = 0; m < 2; m++) 
        for (n = 0; n < 3; n++) 
         if (Matrice[i, j] < Matrice[m, n]) 
         { 
          temp = Matrice[i, j]; 
          Matrice[i, j] = Matrice[m, n]; 
          Matrice[m, n] = temp; 
         } 

正しく

PS:BradleyDotNETによると、これをより簡単に/より効率的にするために、OrderByを見てみるとよいでしょう。

関連する問題