Как прочитать матрицу из консоли и вывести сумму всех элементов матрицы - PullRequest
1 голос
/ 20 мая 2019

Я изучаю C #, и теперь я на многомерных массивах. Я хочу написать программу, которая читает матрицу из консоли и печатает:

  • Количество строк
  • Количество столбцов
  • Сумма всех матричных элементов

Итак, на следующих [строках] строках я получу элементы для каждого столбца, разделенные запятой и пробелом. Я сделал foreach для суммы, но я не понимаю, как вставить элементы в матрицу. Я был бы очень признателен, если бы вы могли мне помочь!

int[] dimensions = Console.ReadLine()
.Split(", ", StringSplitOptions.RemoveEmptyEntries)
.Select(int.Parse)
.ToArray(); 

int rows = dimensions[0];
int columns = dimensions[1];

int[,] matrix = new int[rows,columns];

for (int i = 0; i < rows; i++)
{ 
    int[] numbers = Console.ReadLine()
        .Split(", ", StringSplitOptions.RemoveEmptyEntries)
        .Select(int.Parse)
        .ToArray();
//I do not know how to add the elements here
}

int sum = 0;
foreach (var element in matrix)
{
    sum += element;
}

Ответы [ 2 ]

2 голосов
/ 20 мая 2019

Вы можете использовать Linq Sum(), чтобы вычислить сумму для всех строк

Поскольку вы уже перебираете каждую строку входных данных, вы можете назначить одну временную переменную с именем sum =0 и для каждой строки рассчитатьсумма всех чисел в этой строке и добавление ее во временную переменную, т.е. sum.

int sum = 0;
for (int i = 0; i < rows; i++)
{ 
    int[] numbers = Console.ReadLine()
        .Split(", ", StringSplitOptions.RemoveEmptyEntries)
        .Select(int.Parse)
        .ToArray();
    sum += numbers.Sum(); //Calculate sum of all numbers in a row and add it to existing sum variable.
//I do not know how to add the elements here
}

Console.WriteLine("Sum of all numbers" + sum); //print sum of all numbers i.e. 76
1 голос
/ 20 мая 2019

Доступ к элементам в двумерном массиве осуществляется с помощью двух индексов:

for (int i = 0; i < rows; i++)
{ 
    int[] numbers = Console.ReadLine()
        .Split(", ", StringSplitOptions.RemoveEmptyEntries)
        .Select(int.Parse)
        .ToArray();

    for (int j = 0; j < columns; j++)
    {
        matrix[i,j]=numbers[j];
    }
}

int sum = 0;
for (int i = 0; i < rows; i++)
{ 
    for (int j = 0; j < columns; j++)
    {
        sum += matrix[i,j];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...