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

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

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

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

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

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

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


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

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

12   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы