Нужно найти номер столбца и строки, сумма элементов которых самая большая - C#

Узнай цену своей работы

Формулировка задачи:

Добрый час суток! Есть такая задача. дана матрица целых чисел mxn, m n вводятся с клавиатуры m принадлежит [2;5] n принадлежит [2;10] . Массив заполняем вручную. Нужно найти номер столбика и рядочка ,сумма элементов самая большая. Не могу понять,сам алгоритм нахождение этого рядочка или столбика,ищя там максимальное значение(для двумерного массива,я понимаю,что там все аналогично...) Посмотрел в интернете такого рода задание,оно почти везде реализуется с помощью for(){for(){}}.
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);

        }
    }
}
в методе LogicA к примеру,там где найти для рядочков,помогите написать цикл в цикле,чтоб я понимал.. и обьясните пожалуйста комментариями,чтоб понятно было,спасибо большое. А я попробую так же потом для столбиков,как я понимаю,там нужно просто i и j поменять будет. Спасибо заранее. Просто цикл в цикле пожалуйста помогите,чтоб искало правильно

Решение задачи: «Нужно найти номер столбца и строки, сумма элементов которых самая большая»

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);
 
 
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.818 из 5
Похожие ответы