Перевести из PASCAL в С# - Сумма элементов и седловые точки - C#
Формулировка задачи:
Дана целочисленная прямоугольная матрица. Определить:
1) сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент;
2) номера строк и столбцов всех седловых точек матрицы.
Примечание. Матрица A имеет седловую точку ij a , если ij a является минимальным элементом в i-й строке и максимальным в j-м столбце.
const mm=10; mn=10;
var
a: array [1..mm,1..mn] of Integer;
mr: array [1..mm] of Integer;
mc: array [1..mn] of Integer;
i, j, m, n: Integer;
begin
repeat
Write('m [1..',mm,'] n [1..',mn,']: '); ReadLn(m,n);
until (m in [1..mm]) and (n in [1..mn]);
Write('Элементы (',m*n,'): ');
for i:=1 to m do for j:=1 to n do begin
Read(a[i,j]);
if (j=1) or (mr[i]>a[i,j]) then mr[i]:=a[i,j];
if (i=1) or (mc[j]<a[i,j]) then mc[j]:=a[i,j];
end;
Write('Седловые точки:');
for i:=1 to m do for j:=1 to n do
if (a[i,j]=mr[i]) and (a[i,j]=mc[j]) then Write(' [',i,',',j,']');
WriteLn;
end.Решение задачи: «Перевести из PASCAL в С# - Сумма элементов и седловые точки»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication12
{
class Program
{
static void Main(string[] args)
{
int mm = 10, mn = 10;
int[,] a = new int[mm, mn];
int[] mr = new int[mm];
int[] mc = new int[mn];
Console.Write("m [1..{0}] n [1..{1}]: ", mm, mn);
string[] numbers = Console.ReadLine().Split(' ');
int m = int.Parse(numbers[0]);
int n = int.Parse(numbers[1]);
Console.Write("Элементы ({0}): ", m * n);
for(int i = 0; i < m; i++)
{
string[] numbers2 = Console.ReadLine().Split(' ');
for (int j = 0; j < n; j++)
{
a[i, j] = int.Parse(numbers2[j]);
}
}
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
if(j == 0 || mr[i] > a[i, j])
{
mr[i] = a[i, j];
}
if(i == 0 || mc[j] < a[i, j])
{
mc[j] = a[i, j];
}
}
}
Console.Write("Седловые точки: ");
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
if(a[i, j] == mr[i] && a[i, j] == mc[j])
{
Console.Write("[{0},{1}]", i + 1, j + 1);
}
}
}
Console.WriteLine();
Console.ReadKey();
}
}
}