2016-11-09 103 views
-1

我可以在一個多維數組中總結2個值並使用控制檯應用程序進行打印。下面的代碼打印每個多維數組的2個和。但是我需要的是,打印2個多維數組的總和。我已經清理了代碼,使其不那麼複雜。2個多維數組的總和

 int[,] a = new int[2, 2]; 
     int[,] b = new int[2, 2]; 
     int[,] c = new int[2, 2]; 

     for (int i = 0; i < 2; i++) 
     { 
      for (int j = 0; j < 1; j++) 
      { 
       Console.Write("Please enter {0}. Mark of First lesson", i + 1, j + 1); 
       a[i, j] = Int32.Parse(Console.ReadLine()); 
      } 
     } 

     for (int i = 0; i < 2; i++) 
     { 
      for (int j = 0; j < 1; j++) 
      { 
       Console.Write("Please enter {0}. Mark of Second lesson", i + 1, j + 1); 
       b[i, j] = Int32.Parse(Console.ReadLine()); 
      } 
     } 

     for (int i = 0; i < 2; i++) 
     { 
      for (int j = 0; j < 1; j++) 
      { 
       c[i, j] = a[i, j] + b[i, j]; 
       Console.WriteLine("{0}."+c[i, j],i+1+"The sum of 2 marks is:",j+1); 
      } 
     } 
     Console.ReadKey(); 

回答

0

你不需要爲此做額外的計算。它非常簡單。

你可以帶兩個變量來告訴你每個矩陣的總和,最後你可以添加它們。或者如果你只想要兩個矩陣的總和,那麼你只能通過一個變量來獲得。

所以當你填充你的矩陣只是增加相應的總和的那個值就是了。

public static void Main() 
{ 

    int[,] a = new int[2, 2]; 
    int[,] b = new int[2, 2]; 
    int[,] c = new int[2, 2]; 

    int sum1 = 0; 
    int sum2 = 0; 

    for (int i = 0; i < 2; i++) 
    { 
     for (int j = 0; j < 2; j++) 
     { 
      Console.Write("Please enter {0}. Mark of First lesson", i + 1, j + 1); 
      a[i, j] = Int32.Parse(Console.ReadLine()); 

      sum1 += a[i,j]; 
     } 
    } 

    for (int i = 0; i < 2; i++) 
    { 
     for (int j = 0; j < 2; j++) 
     { 
      Console.Write("Please enter {0}. Mark of Second lesson", i + 1, j + 1); 
      b[i, j] = Int32.Parse(Console.ReadLine()); 
      sum2 += b[i, j]; 
     } 
    } 

    Console.WriteLine("Sum: " + (sum1 + sum2)); 


    //for (int i = 0; i < 2; i++) 
    //{ 
    // for (int j = 0; j < 2; j++) 
    // { 
    //  c[i, j] = a[i, j] + b[i, j]; 
    //  Console.WriteLine("{0}." + c[i, j], i + 1 + "The sum of 2 marks is:", j + 1); 
    // } 
    //} 
    Console.Read(); 
} 
+0

哦,我的天啊,你太棒了。你剛剛救了我:)。非常感謝! –

0

更改爲循環這個

int[,] a = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } }; 
     int[,] b = new int[2, 3] { { 1, 2, 3 }, { 1, 2, 3 } } ; 
     int[] c = { 0, 0 }; 
     int[] d = { 0, 0 }; 

     int k = 0; 
     int l = 0; 

     for (int i = 0; i < 2; i++) 
     { 
      for (int j = 0; j < 3; j++) 
      { 
       c[k] =c[k]+ a[i,j]; 
      } 
      k++; 
     } 
     for (int i = 0; i < 2; i++) 
     { 
      for (int j = 0; j < 3; j++) 
      { 
       d[l] = d[l]+ b[i, j]; 
      } 
      l++; 
     } 
     int sum1 = 0; 
     int sum2 = 0; 
     for (int i = 0; i < c.Length; i++) 
      sum1 += c[i]; 

     for (int i = 0; i < d.Length; i++) 
      sum2 += d[i]; 

     int totalSum = sum1 + sum2; 
     Console.WriteLine(totalSum); 

希望這有助於

+0

最後一個循環?看起來你只是改變了Ĵ<1到j <3,j變量中有沒有說打印的循環量。 –

+0

如果你想添加兩個矩陣數組......行在這裏2和列是3所以我應該少於2和j應該少於3 ...如果不是這樣,請解釋你想要做什麼 – Geeky

+0

其實我不使用第三行,我編輯了代碼。感謝提醒。但是,那不是我想要的東西。讓我解釋一下:10 + 10 = 20,30 + 30 = 60然後20 + 60 = 80 。 –

0

的問題是在這條線:

for (int j = 0; j < 1; j++) 

這會剛好運行一次,因爲0 + 1 = 1且1不小於1.換句話說,它實際上不會對數組中的第二行做任何事情。將其更改爲

for (int j = 0; j <= 1; j++) 

它會工作(請參閱下面的更多詳細信息)。

需要考慮的另一件事:您可能需要明確說明此操作應該如何工作。在這種情況下,「總和」實際上是非常模糊的。例如:

Array 1  Array 2 
2   3 
4   6 

如果結果是

Array 3 
5 
10 

(即,它的工作原理是矢量相加)還是應15? (修改你的代碼就像第二個一樣工作很容易;在這種情況下,你根本不會使用內部for循環,只是一個計數器存儲你要添加的行)。

第三種可能性(我嚴重懷疑這是你想要的),但你可能會嘗試這樣的事:

Array 1 Sum  Array 2 Sum 
6    9 

下面是一個代碼示例,可以幫助:

private static void AddTwoArrays() 
    { 
     int size; 

     Console.WriteLine("Enter a size:"); 
     while (!int.TryParse(Console.ReadLine(), out size)) 
     { 
      Console.WriteLine("Enter a valid int"); 
     } 

     int[][] array1 = new int[size][]; 
     int[][] array2 = new int[size][]; 

     int sum = 0; 

     int[] rowSum = new int[size]; 

     Random random = new Random(); 

     for (int i = 0; i < size; i++) 
     { 
      array1[i] = new int[size]; 
      array2[i] = new int[size]; 

      for (int j = 0; j < size; j++) 
      { 
       array1[i][j] = random.Next(0, 5); 
       array2[i][j] = random.Next(0, 5); 

       // This is if you want to get the sum of every number contained in the array 
       sum += array1[i][j]; 
       sum += array2[i][j]; 

       // This'll give row-by-row 
       rowSum[j] += array1[i][j]; 
       rowSum[j] += array2[i][j]; 
      } 
     } 

     Console.WriteLine("Sum: " + sum.ToString()); 
    } 

它的工作方式與您的方式完全不同,但它仍然可以作爲一個有用的示例。

+0

它使每個多維數組的結果加倍。我的意思是它打印兩次相同的東西 –

+0

@KorayBallı請參閱我的編輯 - 它並不是所有的清楚你想要實現的操作,但我在這裏給出了一些可能性。無論如何,我的原始觀點是你完成循環的方式沒有任何意義,因爲它不會實際循環遍歷整個數組,因此它對第二行幾乎沒有任何影響,因此毫無意義。 – EJoshuaS

+0

看看第三種可能性,Array 1的總和是6,Array 2的總和是9.現在我需要6 + 9 –