Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задача на поиск значений в матрице

Автор: erwin 27.04.2007 3:25

Добрый вечер. Вот тут подкинули задачку:

Написать программу, которая в прямоугольной матрице NxM действительных чисел находит максимальное значение из минимальных значений столбцов и минимальное значение из максимальных значений строк (max(j)(min(i)(Aij)) и min(i)(max(j)(Aij)))

Поиском пользовался, но как-то ничего подобного найти не смог, или был невнимателен, так что буду благодарен за любую помощь, а это что смог накидать, не бейте, программер из меня почти никакой... Как программа должна работать я понимаю, а как это реализовать представляю с трудом.

Но это еще не все, самое непонятное то, что нужно чтобы данные этой программы читались из файла%/ что это такое я не понимаю, но такое вот было требование. Объясните, пожалуйста, что это и с чем едят.


function poisk_max(ma:integer):integer;
var
mb,max:integer;
begin
mb:=0; {poisk max v stroke "ma"}
max:=dmas[0,ma];
while not(mb=n) do
begin
if (dmas[mb,ma]>=max) then
max:=dmas[mb,ma];
mb:=mb+1;
end;
poisk_max:=max;
end;

function poisk_min:integer;
var
mina,min:integer;
begin
mina:=0;
min:=results[mina];
while not(mina=n) do {ischet min v massive "results"}
begin
if (results[mina]<=min) then
min:=results[mina];
mina:=mina+1;
end;
poisk_min:=min;
end;


Автор: Sto 27.04.2007 4:36

Чтото подобное писал на с++
Условие:
Элемент матрицы назовём седловой точкой, если он является наименьшим в своей строке и одновременно наибольшим в своём столбце, или наоборот является наибольшим в строке и наименьшим в столбце. Для заданной целой матрицы размером n x m напечататать индексы всех её седловых точек.

< ... >

 ! 
Sto, читай Правила. Программный текст на C вырезан. Lapp



Автор: volvo 27.04.2007 5:49

Sto, а ко всему прочему, не кажется тебе, что "седловая точка", и то, что указано в условии - несколько разные вещи? Если бы было надо седловые точки - выкладывалось по крайней мере 3 программы на Паскале...

erwin, пишешь функцию, которая по номеру столбца выдает минимальное значение в нем содержащееся; допустим, называешь ее min_col, и вызываешь так:

max_col := -10000.0; { <--- заведомо меньше, чем минимум в первом столбце }

for i := 1 to M do begin { M - число столбцов !!! }
curr_min := min_col(i);
if max_col < curr_min then max_col := curr_min;
end;

{ в результате вот тут у тебя в переменной max_col хранится максимум из минимумов столбцов }


Аналогично делаешь для строк, только все с точностью "до наоборот" - функция ищет максимум в сроке, а в цикле - из этих максимумов находишь наименьший...

Как найти min/max строки/столбца - можешь посмотреть в FAQ-е и в поиске, это решалось неоднократно...