![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
LeD4eG |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 29.9.2009 Где: Волгоград Репутация: 1 Всего: 1 |
здравствуйте!
помогите, пожалуйста, с реализацией мысли. задача состоит в следующем: найти максимальный элемент из повторяющихся более одного раза в матрице из целых чисел произвольного размера. так как статус на форуме "новичок" соответствует моему статусу в С++, мной был получен следующий метод решения: 1. создаём в динамической памяти двумерный массив, вводим элементы и бла-бла-бла; 2. находим максимальный, проходим по матрице, если он встречается ещё раз, то он и будет максимальным из повторяющихся. но есть две проблемы: 1) это, мягко скажем, не совсем то, что требовалось в задаче; 2) я не знаю, что делать, если этот максимальный элемент второй раз не встретиться..... есть ещё соображения: 1. преобразовать матрицу в одномерный массив; 2. проходим каждый элемент и считаем сколько он раз встречается. 3. элементы, которые встречаются один раз удаляем (в ноль), повторения оставшихся элементов тоже удаляем. находим максимальный из оставшихся. также был такой план: 1. пройтись по матрице, найти повторяющиеся элементы и сохранить их в одномерный массив; 2. найти максимальный в одномерном массиве. но для второго и третьего варианта у меня не хватает опыта. чуть позже я кину код своих идей. но эти попытки провалились. читал схожие темы на нашем форуме. но создание векторов для меня слишком далеко.....поэтому не смог применить эти знания. помогите ![]() --------------------
Ты не успел стать для кого-то главным, кому-то очень нужным..... |
|||
|
||||
Crafty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: 12 Всего: 14 |
||||
|
||||
vnf |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 9.2.2008 Репутация: нет Всего: 1 |
Вариант 3
Это сообщение отредактировал(а) vnf - 25.10.2010, 22:22 |
|||
|
||||
djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 4 Всего: 39 |
Можно перевести фразу "максимальный элемент из повторяющихся более одного раза в матрице" на более русский язык?
Добавлено через 3 минуты и 3 секунды Если речь о "последнем" (крайнем правом нижнем) максимальным, то все просто:
-------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
LeD4eG |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 29.9.2009 Где: Волгоград Репутация: 1 Всего: 1 |
в матрице есть группа повторяющихся более одного раза элементов. среди этих элементов найти максимальный. я не умею более по-русски. Добавлено через 1 минуту и 59 секунд да, в памяти он так и представляется. я думал представить массив этих массивов в один одномерный массив. --------------------
Ты не успел стать для кого-то главным, кому-то очень нужным..... |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 11 Всего: 88 |
почему?
а ты его не назначаешь максимальным, пока он не встретится второй раз... -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
Bugmaker |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 27.6.2008 Репутация: нет Всего: нет |
Вообще напрашивается следующая мысль: пробегаем по матрице, и если встречается элемент, превышающий пременную max, то пробегаем по матрице еще раз и ищем встречается ли он там повторно. Если да, то переназначаем max, если нет - игнорируем.
Примерно так.
Думаю подход ясен. Коряво конечно, но работать будет) Модератор: Не забываем пользоваться кнопочкой "Код" Это сообщение отредактировал(а) bsa - 28.10.2010, 21:19 |
|||
|
||||
LeD4eG |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 29.9.2009 Где: Волгоград Репутация: 1 Всего: 1 |
результаты обработки предложений:
Bugmaker, я реализовал твоё предложение. вместе присваивания максимальному элементу значения 0, решил, что будет лучше запоминать индексы i,j максимального элемента, поскольку массив может состоять из отрицательных величин и этот метод не сработает. также подправил небольшую ошибку, которая сильно влияла на результат (максимальным получался первый элемент).чтобы не быть голословным код:
vnf, при реализации твоей метода (хотя стоит признаться, что я хотел его реализовать изначально) у меня получились странные результаты..... ![]() ![]()
почему я написал так: при попытке проходить по i и j=i+1 возникает ошибка о невозможности преобразования int* i в int. применял процедуру разыменования - компутер снова задумался..... я не знаю закрывать ли тему. в принципе задача решена. хоть и автор идеи считает, что его метод кривоват. я бы хотел всё-таки ещё попробовать реализовать и третий метод (находим повторяющиеся, записываем в массив находим там максимум) но всё равно спасибо всем, кто помог. --------------------
Ты не успел стать для кого-то главным, кому-то очень нужным..... |
||||
|
|||||
Crafty |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: 12 Всего: 14 |
|
||||
|
|||||
kamre |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 24.3.2006 Репутация: 2 Всего: 13 |
Еще вариант:
|
|||
|
||||
mes |
|
||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
легкие штрихи :
Это сообщение отредактировал(а) mes - 27.10.2010, 00:46 |
||||||
|
|||||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 11 Всего: 88 |
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
LeD4eG |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 29.9.2009 Где: Волгоград Репутация: 1 Всего: 1 |
тема изучена и закрыта. спасибо всем за помощь!
![]() --------------------
Ты не успел стать для кого-то главным, кому-то очень нужным..... |
|||
|
||||
Crafty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: 12 Всего: 14 |
Ещё немного подправил свой вариант.
|
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 11 Всего: 88 |
![]() Челу нужен двумерный динамический массив. Исходя из этого и нужно "подправлять". ![]() -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
LeD4eG |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 29.9.2009 Где: Волгоград Репутация: 1 Всего: 1 |
оп-оп-оп!найдена ошибка в коде, приведённом мной. программа работает по непонятной мне логике: она находит просто максимальный элемент в матрице. в ходе испытаний это было доказано.
ошибка находится в операторе условия внутреннего цикла, т.е. вместо
это вызвано тем, что в первом случае будет найден просто максимальный элемент, а во втором - проверяется, если элемент больше максимума, если в массиве найден ещё один такой же элемент, то это и есть максимальный из повторяющихся. --------------------
Ты не успел стать для кого-то главным, кому-то очень нужным..... |
||||
|
|||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 11 Всего: 88 |
LeD4eG, у тебя там ещё море работы, так что не расслабляйся. -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
Bugmaker |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 27.6.2008 Репутация: нет Всего: нет |
Растянули элементарную задачу на 2 страницы.... может пора расслабится уже? )
Это сообщение отредактировал(а) Bugmaker - 5.11.2010, 12:35 |
|||
|
||||
LeD4eG |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 29.9.2009 Где: Волгоград Репутация: 1 Всего: 1 |
на моём уровне пока сложно найти ещё ошибок, но я буду стараться ![]()
ну вопрос уже помечен решённым. просто хочется, чтобы для тех, кто также, как и я, не сможет решить эту элементарную задачу, было понятное решение. а вообще да, закругляемся. Это сообщение отредактировал(а) LeD4eG - 5.11.2010, 12:55 --------------------
Ты не успел стать для кого-то главным, кому-то очень нужным..... |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 11 Всего: 88 |
А никто и не напрягался... ![]() LeD4eG, тебе ещё рано закругляться, прога-то твоя не фурычит, так что работай и не обращай внимания нинакого. Пописдеть все мастера.. ![]() -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
LeD4eG |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 29.9.2009 Где: Волгоград Репутация: 1 Всего: 1 |
как так?теперь, вроде, работает....по поводу второй части - спасибо, приму к сведению. ![]() --------------------
Ты не успел стать для кого-то главным, кому-то очень нужным..... |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 11 Всего: 88 |
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
LeD4eG |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 29.9.2009 Где: Волгоград Репутация: 1 Всего: 1 |
так. опять найдена ошибка. правильно, так получается, потому что в качестве максимального я беру первый элемент. если на этом месте стоит действительно максимальный элемент всей матрицы (не обязательно повторяющийся), тогда и возникает ошибка, в виду того, что ни один элемент матрицы его превзойти не может. эмм....я это понял.....только вот не знаю как этого избежать.....
просто приравнять максимальный нулю нельзя, потому что матрица может и из отрицательных чисел состоять..... Это сообщение отредактировал(а) LeD4eG - 5.11.2010, 13:35 --------------------
Ты не успел стать для кого-то главным, кому-то очень нужным..... |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 11 Всего: 88 |
я уже писал в своём первом посте, читай внимательнее то, что тебе пишут:
в моём коде это реализовано.. -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
LeD4eG |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 29.9.2009 Где: Волгоград Репутация: 1 Всего: 1 |
Dov, я всегда читаю направленные в мой адрес сообщения. но ЭТО НАПРАВЛЕННОЕ выходит за рамки понимания. да, возможно я туп. в виду своей умственной и интеллектуальной ограниченности привожу ещё один костыль.
пусть я услышу в свой адрес Boo!, но на нынешней стадии своего развития я ничего большего предложить не могу. Это сообщение отредактировал(а) LeD4eG - 5.11.2010, 14:59 --------------------
Ты не успел стать для кого-то главным, кому-то очень нужным..... |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
INT_MIN : http://www.cplusplus.com/reference/clibrary/climits/ подобным подходом Вы резервируете одно из значений под свои нужды, с гарантией, что такого числа не будет в матрице.. если ж такой гарантии нет, то заведите дополнительно флаг, о том, что уже есть хотя бы одно максимальное число.. Это сообщение отредактировал(а) mes - 5.11.2010, 14:54 |
|||
|
||||
LeD4eG |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 29.9.2009 Где: Волгоград Репутация: 1 Всего: 1 |
mes,
sorry for this.... я такой гарантии дать не могу по причине того, что я ищу максимальное из повторяющихся. а не могу заранее сказать - будет ли это число повторяться. кстати, Павловская Т.А. - min signed short int = -32768....... Это сообщение отредактировал(а) LeD4eG - 5.11.2010, 15:13 --------------------
Ты не успел стать для кого-то главным, кому-то очень нужным..... |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
применительно для вашего условия, "хотя бы одно парное число".. Добавлено через 3 минуты и 31 секунду а матрица у Вас из шортов или интов ? а для инта тоже будете в справочник заглядывать ? а Вы уверены что оно на другой платформе, будет сооответсвовать значению приведенному Павловской ? а не боитесь опечаться, и потом не заметить ее ? в общем пользуйтесь лимитами, и не надо будет напрягаться на лишние вопросы.. ![]() |
|||
|
||||
LeD4eG |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 29.9.2009 Где: Волгоград Репутация: 1 Всего: 1 |
так? --------------------
Ты не успел стать для кого-то главным, кому-то очень нужным..... |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
не совсем.. если flag == false просто ищете парное значение
если труе, то ищете только для тех, что превышают макс. |
|||
|
||||
LeD4eG |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 29.9.2009 Где: Волгоград Репутация: 1 Всего: 1 |
из интов. да, буду!если появятся на то веские причины или сомнения другого характера. и не постыжусь этого. в любом случае, это было направлено на указание на мой взгляд опечатки, а не для унижения Вашей компетенции.
вот этого я вообще не понял. --------------------
Ты не успел стать для кого-то главным, кому-то очень нужным..... |
||||
|
|||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
вот условным кодом для линейного ряда
если ошибок нет, то нужно только "удвоить" цикл для прохождения матрицы.. Это сообщение отредактировал(а) mes - 6.11.2010, 17:26 |
|||
|
||||
LeD4eG |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 29.9.2009 Где: Волгоград Репутация: 1 Всего: 1 |
mes, я не понял зачем вообще нужен этот флаг в данной задаче?можете по-подробнее пояснить?
и ещё один вопрос: оператор И требует совместной истинности обоих операндов....т.е. и flag ==true и (m[i]<=max) == true,чтобы выполнилось continue....но в коде нет момента изменения значения flag. эта ветка не будет выполняться...тогда зачем она? --------------------
Ты не успел стать для кого-то главным, кому-то очень нужным..... |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
![]() флаг устанавливается если есть хотя бы одна пара..т.е. логиская замена вашему "65536/2" т.е. вначале ищется значение, которое имеет пару и оно присваивается мах.. а как найдена, то пара ищется среди значений больше max.. |
|||
|
||||
LeD4eG |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 29.9.2009 Где: Волгоград Репутация: 1 Всего: 1 |
всё, я понял. я думаю на этом задачу можно считать решённой. спасибо всем!
Это сообщение отредактировал(а) LeD4eG - 6.11.2010, 14:36 --------------------
Ты не успел стать для кого-то главным, кому-то очень нужным..... |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 11 Всего: 88 |
LeD4eG, ну так покажи свой окончательный вариант. ![]() Интересно же посмотреть на результаты трёхстраничной дискуссии... ![]() з.ы. А если, всё-таки, есть какие-то затруднения, так скажи, не стесняйся. Поможем, если что... ![]() -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
LeD4eG |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 29.9.2009 Где: Волгоград Репутация: 1 Всего: 1 |
как-то вот так у меня получилось:
она бесконтрольная вышла.....в код смотришь - всё логично, а вот результаты поражают....программа находит и повторяющиеся и пишет нужное, если таковых не находит, НО! если вводить например 12 12 12 12 9 9 9 9 1 2 3 4 (для матрицы 3х4)...повторяющихся элементов нет... Это сообщение отредактировал(а) LeD4eG - 6.11.2010, 16:34 --------------------
Ты не успел стать для кого-то главным, кому-то очень нужным..... |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 11 Всего: 88 |
LeD4eG, попробуй так:
з.ы. Но это всё геммор. Если бы ты разбил свой код на отдельные маленькие функции, то всё было бы намного проще. И ты давно бы уже решил свою задачу... Это сообщение отредактировал(а) Dov - 6.11.2010, 17:44 -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
тут явно не правильно.. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
ловите, тестируйте и допиливайте :
http://liveworkspace.org/code/309dcd1e1636...2910efb2a27cc52 Это сообщение отредактировал(а) mes - 6.11.2010, 22:53 |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 11 Всего: 88 |
подредактировал, убрал лишний цикл.
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
P.S.
если в том же ряду что и первое значение, то стартуем со следующей после него позиции, иначе с нулевой.. |
|||
|
||||
LeD4eG |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 29.9.2009 Где: Волгоград Репутация: 1 Всего: 1 |
Dov, а, если found будет больше нуля, то эти циклы выполняться не будут ведь. то есть в bool результат преобразуется. я правильно понял?
mes, твой код я тоже проработал, спасибо ![]() Это сообщение отредактировал(а) LeD4eG - 6.11.2010, 23:42 --------------------
Ты не успел стать для кого-то главным, кому-то очень нужным..... |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 11 Всего: 88 |
да. Добавлено через 1 минуту и 55 секунд LeD4eG, тебе ещё нужно память освободить. -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
LeD4eG |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 29.9.2009 Где: Волгоград Репутация: 1 Всего: 1 |
да-да, про память я помню, но в виду того, что она освобождается после окончания программы, а её конец наступает быстро, то, в принципе...но про обязательное освобождение памяти я не забываю
![]() --------------------
Ты не успел стать для кого-то главным, кому-то очень нужным..... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |