Поиск максимального элемента в строке и минимального в столбце - C#

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

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

Дана таблица a, состоящая из n строк и n столбцов. Требуется определить, есть ли в таблице такой элемент a[i, j], который был бы максимален в i-й строке и минимален в j-м столбце. Если такой элемент есть в таблице, то вывести его координаты. Если таких элементов несколько, то вывести координаты одного из них. Есть код на Pascal:
const n = 4;
a: array [1..n, 1..n] of 
integer = ((10,9,80,7),(11,8,20,11), (9,7,40,1),(13,3,20,6));
var i, j, k, st, min : integer;
flag: boolean;
begin
  i := 1;
  flag := false;
  while (i <= n) and not flag do
    begin
    st := 1;
      for j := 2 to n do
        if a[i, j] > a[i, st] then st := j;
       {нашли максимум по i-й строке, запомним
        его в переменной min}
        min := a[i,st];
       flag := true;
       k := 0;
       repeat
       inc(k);
     flag := flag and (a[k, st] >= min);
    {flag будет равен true, если найденный
    максимальный элемент является минимальным в
    столбце st}
    until (k >= n) or not flag;
    inc(i)
    end;
    if flag then writeln(i-1:3, st:3)
    else writeln('no');
 readln
end.
Её необходимо написать в C# по образу и подобию кода Pascal. Она работает, но увы и ах, неверно. Вот что получилось у меня:
using System;
 
namespace задача
{
    class Program
    {
        static void Main()
        {
            int n = 5, st = 0, min, k;
            int[,] a = { 
                       { 10, 9, 80, 7 }, 
                       { 11, 8, 20, 11 }, 
                       { 9, 7, 40, 1 }, 
                       { 13, 3, 20, 6 }
                       };
            bool flag;
 
            int i = 1;
            flag = false;
 
            while ((i <= n) && (flag == false))
            {
                st = 1;
                for (int j = 1; j < n - 1; j++)
                    if (a[i, j] > a[i, st])
                        st = j;//нашли максимум по i-й строке, запомним его в переменной min
                min = a[i, st];
                flag = true;
                k = 0;
 
                do
                {
                    k++;
                    flag = flag && (a[k, st] >= min);
                }
                while ((k >= n) || (flag != true));
                i++;
            }
 
            if (flag)
                Console.WriteLine((i-1) + " " + st);
            else
                Console.WriteLine("no");
        }
    }
}
Помогите, пожалуйста, выявить ошибку в коде C#.

Решение задачи: «Поиск максимального элемента в строке и минимального в столбце»

textual
Листинг программы
n = 4

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


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

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

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