Элемент матрицы назовем седловой точкой,если он является наименьшим в своей строке и одновременно наибольшим в своем столбце или,наоборот,является
10-11 класс
|
наибольшим в своей строке и наименьшим в своем столбце. Для заданной целой матрицы размером n*m напечатать индексы всех ее седловых точек.
const
n = 4;
m = 6;
var
a: array[1..n, 1..m] of integer; // основной массив
Rext: array[1..n, 1..2] of integer; // номера столбцов с min и max в строках
Cext: array[1..2, 1..m] of integer; // номера строк с min и max в столбцах
i, j, amin, amax: integer;
begin
// заполняем массив А случайными числами
Randomize;
writeln('Исходный массив');
for i := 1 to n do
begin
for j := 1 to m do
begin
a[i, j] := random(100) - 50;
write(a[i, j]:4);
end;
writeln;
end;
// Заполняем массив Rext n x 2
for i := 1 to n do
begin
amin := 10000; //заведомо больше a[i,j]
amax := -10000; //заведомо меньше a[i,j]
for j := 1 to m do
begin
if amin > a[i, j] then begin
amin := a[i, j]; Rext[i, 1] := j
end;
if amax < a[i, j] then begin
amax := a[i, j]; Rext[i, 2] := j
end
end;
end;
// Заполняем массив Cext 2 x m
for j := 1 to m do
begin
amin := 10000; //заведомо больше a[i,j]
amax := -10000; //заведомо меньше a[i,j]
for i := 1 to n do
begin
if amin > a[i, j] then begin
amin := a[i, j]; Cext[1, j] := i
end;
if amax < a[i, j] then begin
amax := a[i, j]; Cext[2, j] := i
end
end
end;
writeln;
// Ищем седловые точки
writeln('*** Седловые точки ***');
for i := 1 to n do
begin
j := Rext[i, 1];
if Cext[2, j] = i then
write('[', i, ',', j, '] ')
else begin
j := Rext[i, 2];
if Cext[1, j] = i then
write('[', i, ',', j, '] ')
end
end;
writeln
end.
Тестовое решение:
Исходный массив
35 34 -17 -33 20 -29
-8 -31 -4 -20 8 -1
-39 -7 -12 27 42 9
32 13 -17 37 19 -24
*** Седловые точки ***
[2,5]
Другие вопросы из категории
Вычислить сумму квадратов отрицательных чисел,
стоящих на местах, кратных 3; подсчитать количество чисел, не принадлежащих промежутку [А, В).
результат сравнения двух чисел.
3)Вести линейный массив и вычислить сумму всех элементов этого массива.
Помогите написать программу и в ней разобраться)
Читайте также
наибольшим в своей строке и наименьшим в своем столбце. Для заданной целой матрицы размером n*m напечатать индексы всех ее седловых точек.
если же первый элемент массива равен "B" , то переносим его на третью с конца позицию.Каку юпоследовательность получил Незнайка, если данный алгоритм он применил 6 раз?
он строго меньше всех имеющихся у него соседей. Подсчитать количество локальных
минимумов заданной матрицы размером 10 на 10.
Найти сумму модулей элементов, расположенных выше
главной диагонали.
на языке С
Вот задача.
Заданная целочисленная матрица размером NXM. Определить k-количество "особых" элементов матрицы, считая элемент "особым", если в его строке слева от него находятся элементы, меньшие его, а справа - большие.
Вот мой код.И если уж у меня все плохо,то предложите свой код программы.
program samost;
const n=5;
m=5;
type tmatr = array[1..n, 1..m] of integer;
var a:tmatr;
i,j,k:integer;
procedure PrintMatrix(var g:tmatr);
begin
var i,j,k:integer;
for i:=1 to n do
begin
for j:=1 to n do
write(g[i,j]:4);
writeln
end;
end;
procedure MakeMatrix;
begin
var i,j,k:integer;
randomize;
for i:=1 to n do
for j:=1 to n do
begin
a[i,j]:=random(10)-5;
end;
end;
begin
MakeMatrix;
writeln('matrica A: ');
PrintMatrix(a);
k:=0;
for i:=1 to n do
for j:=1 to m do
begin
if (a[i,j]<a[i+1,j])and(a[i,j]>a[i-1,j]) then inc(k)
end;
writeln('kolichestvo elementov = ',k);
end.
положительных элементов матрицы. полученную матрицу x и среднее арифмитическое распечатать