Нужно найти номер столбца и строки, сумма элементов которых самая большая - 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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д