![]() |
|
Модераторы: bsa |
![]()
|
|
| Azart11 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 21.9.2012 Репутация: нет Всего: нет |
Это сообщение отредактировал(а) Azart11 - 30.9.2012, 14:02 |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
А где вопрос ?
Не указание участникам форума - сделайте мне эту домашку/курсовую/зачёт, а вопрос типа: я сделал(а) по заданию так-то и так-то, а рез-т какой-то не такой..... для начала... здесь выделяется память под переменные i,j и под a, b все четыре типа int. Значение этим переменным никто не присваивает. Затем выделяется массив f, размер которого равен a * b. Но, т.к. ни a, ни b никто не инициализировал, то размер этого f может быть какой угодно. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Azart11 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 21.9.2012 Репутация: нет Всего: нет |
Выше моя программа, как совместить минимум и максимум в единую точку(седловую) |
|||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Azart11, Вам нужно всего лишь проверить 2 условия для каждого элемента:
Оптимизацией алгоритма можно заняться позже (если позволят время и знания). И в Вашей версии поиска min/max элементов Вы не учитываете, что в строке матрицы может быть несколько минимальных элементов (с одинаковыми значениями), и, соответственно, в столбце - несколько максимальных. Вы можете потерять несколько "седловых точек", если будете считать, что min/max элементы единственны. ЗЫ Большая просьба: в коде пользоваться пробелами, читать невозможно... -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| Azart11 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 21.9.2012 Репутация: нет Всего: нет |
как исправить мою программу, min ищет верно, а вот max само значение выдаёт правильно, но координаты не правильны.
1)Например: матрица n=2 и m=2 1 9 2 2 k[0;0] min=1 k[1;1] min=2 k[1;0] min=2 k[1;0] max=2 k[1;0] max=9 - здесь нужно k[0;1] max=9 2) или вот ещё матрица n=1 и m=3 k[0;0] min=1 k[ 1975749845][592945972]max=1 - должно быть k[0][0]max=1 k[ 1975749845][592945972]max=3 - должно быть k[0][1]max=3 k[ 1975749845][592945972]max=2 - должно быть k[0][2]max=2 |
|||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Внимательно прочитать код.
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| Silent |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 3.10.2006 Репутация: 1 Всего: 9 |
Что-то мне предлагаемые решения совсем не нравятся, слишком сложные. Я бы решил задачу так - построил массив максимальных элементов по строкам, минимумы по столбцам, а потом пробежался по массиву, и если элемент k[i][j] равен max[j] и min[i] - то это седловая точка, всё про всё пара строчек, очень простых строчек:
|
|||
|
||||
| borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
Silent, твой вариант не учитывает то, о чём говорил feodorv:
проверь на такой матрице
выделенный элемент будет найден как седловая точка, а на самом деле это не так. Это сообщение отредактировал(а) borisbn - 24.9.2012, 09:44 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Направление мысли с массивами min[] и max[] - верное)))
Особого смысла сравнивать k[i][j] и min[i], а потом k[i][j] и max[j], нет. Достаточно просто сравнить min[i] и max[j] Думаю, что учитывает, поскольку перебор в конце идет по всем столбцам и всем строкам Не проверял, но верю на 64 разрядной машине. Но, должен заметить, автор топика пользуется float-значениями -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| Silent |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 3.10.2006 Репутация: 1 Всего: 9 |
на всякий случай проверил, в матрице только одна седловая точка, выделенный элемент не считается седловым. Да, автор использует float, а у меня int - но мое дело ведь показать, как можно решать, а не дать рабочий код, который можно идти сдавать преподавателю/начальнику. То же самое с инициализацией, подключайте limits.h (INT_MAX, INT_MIN), string.h (memset), подключайте boost'ы и прочие радости для кросплатформенной компиляции. Я лишь ответил на вопрос "Как минимум и максимум совместить в седловую точку?" |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
Ага. Я тоже - сначала написал не подумав, а потом проверил. Алгоритм на самом деле корректный. Сорри -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
Ага! И даже более того, он вообще не нужен.
|
|||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |