2016-11-09 77 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 –