Нужно найти номер столбца и строки, сумма элементов которых самая большая - C#
Формулировка задачи:
Добрый час суток! Есть такая задача. дана матрица целых чисел mxn, m n вводятся с клавиатуры m принадлежит [2;5] n принадлежит [2;10] . Массив заполняем вручную. Нужно найти номер столбика и рядочка ,сумма элементов самая большая. Не могу понять,сам алгоритм нахождение этого рядочка или столбика,ищя там максимальное значение(для двумерного массива,я понимаю,что там все аналогично...) Посмотрел в интернете такого рода задание,оно почти везде реализуется с помощью for(){for(){}}.
в методе LogicA к примеру,там где найти для рядочков,помогите написать цикл в цикле,чтоб я понимал.. и обьясните пожалуйста комментариями,чтоб понятно было,спасибо большое. А я попробую так же потом для столбиков,как я понимаю,там нужно просто i и j поменять будет. Спасибо заранее. Просто цикл в цикле пожалуйста помогите,чтоб искало правильно
using System;
namespace Little
{
class Program
{
static int Vvod1() {
Console.WriteLine("Введите значение m(рядочки)");
int m = 0;
do
{
Console.WriteLine("Значение m должно быть в пределах от 2 до 5");
m = int.Parse(Console.ReadLine());
} while (m<2|m>5);//проверяем ввод
return m; //возвращаем значение m
}
static int Vvod2() {
int n = 0;
Console.WriteLine("Введите значение n(столбики)");
do
{
n = int.Parse(Console.ReadLine());
} while (n < 2 | n > 10);
return n;// аналогично vvod1
}
static int[,] Res(int m,int n) {
int[,] matrix = new int[m, n];
Console.WriteLine("Введите элементы матрицы");
//заполняем массив вручную
for (int i=0;i<matrix.GetLength(0);i++) {
for (int j=0;j<matrix.GetLength(1);j++) {
matrix[i, j] = int.Parse(Console.ReadLine());
}
}
return matrix;
}
static int LogicA(int a, int[,] array) {
int max1=0;
for (int i=0;i<array.GetLength(0);i++) {
int sum1 = 0;
for (int j=0;j<array.GetLength(1);j++) {
sum1 += array[i, j];//суммируем элементы
if (sum1 > max1) {
max1 = sum1;
}
}
}
return a;
}
static void Main(string[] args)
{
int m = Vvod1();// m будет равняться значению,которое вернет нам Vvod1
int n = Vvod2(); // значение которое вернет нам Vvod2
int[,] array = Res(m, n);
}
}
}Решение задачи: «Нужно найти номер столбца и строки, сумма элементов которых самая большая»
textual
Листинг программы
static void maxSum(int[,] matrix)
{
//сумма каждой строки
int[] stroki =new int[matrix.GetLength(0)];
for (int i = 0; i < matrix.GetLength(0); i++)
{
for (int j = 0; j < matrix.GetLength(1); j++)
{
stroki[i] += matrix[i, j];
}
}
int[]stolbci=new int[matrix.GetLength(1)];
//сумма каждого столбца
for (int i = 0; i < matrix.GetLength(1); i++)
{
for (int j = 0; j < matrix.GetLength(0); j++)
{
stolbci[i] += matrix[j,i];
}
}
//теперь проходим по полученный данным циклом for
int max = int.MinValue;
int stroka = 0, stolb = 0;
for (int i = 0; i < stroki.Length; i++)
{
for (int j = 0; j < stolbci.Length; j++)
{
// суммтруем для каждой строки и записываем в переменную сумму и номера столбцов и строк
int sum = stroki[i] + stolbci[j];
if (sum > max)
{
max = sum;
stroka = i;
stolb = j;
}
}
}
Console.WriteLine("Номер строки {0}",stroka);
Console.WriteLine("Номер столбца {0}",stolb);
Console.WriteLine(max);
}