2016-11-09 3 views
-1

Я могу суммировать 2 значения в одном многомерном массиве и печатать с помощью Console Application. Этот код ниже печатает 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

Последний цикл? Похоже, вы только изменили j <1 на j <3. Переменная j должна содержать количество циклов печати. –

+0

Если вы хотите добавить два массива dimesional ... строки здесь 2, а столбцы - 3, поэтому я должен быть меньше 2 и j должен быть меньше 3 ... Если это не так, пожалуйста, объясните, что вы пытаетесь сделать – Geeky

+0

На самом деле я не использую 3-й ряд, и я отредактировал код. Спасибо за напоминание. Но да, это не то, что я хочу. Позвольте мне объяснить: 10 + 10 = 20, 30 + 30 = 60, затем 20 + 60 = 80 , –

0

Проблемы заключается в этой строке:

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

Это будет работать только один раз, потому что 0 +- = 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 sum is 6 и Array 2 sum - 9. Теперь мне нужно 6 + 9 –

Смежные вопросы