IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Задача на поиск значений в матрице
erwin
сообщение 26.04.2007 23:25
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


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

Написать программу, которая в прямоугольной матрице 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;

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 27.04.2007 1:49
Сообщение #2


Гость






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-е и в поиске, это решалось неоднократно...
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 6:24
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"