Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: [С++] поиск дубля в массиве - в чем ошибка?  (Прочитано 33062 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #30 : 01-10-2009 05:17 » 

даа Улыбаюсь это оно Улыбаюсь
решение публиковалось в книге "Жемчужины программирования"

я бы
Код:
char matr[M+1];
заменил на bitset

P.S.: А вот если надо вернуть индексы совпадающих элементов ? (так, из вредности)

если нет ограничения по памяти( в реальной жизни это не так) или набор элементов не велик, то
Код:
char matr[M+1];
заменяем
Код:
long matr[M+1]
и храним там номера элементов, если видим повтор, то обновляем номер и сохраняем его во временное хранилище (если список повторов нужно выдать в конце)

Записан

Странно всё это....
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #31 : 01-10-2009 05:24 » new

по ТЗ достаточно

long indx1;
long indx2;

Улыбаюсь
Записан

wildCroissant
Гость
« Ответ #32 : 01-10-2009 09:33 » 

2Finch, забавное решение, смахивет на методы использования таблиц для описания функций...
Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #33 : 01-10-2009 09:40 » 

Finch, собственно, я в том числе это решение и имел в виду Улыбаюсь
Другой вариант - когда массив уже расположен в блоке памяти размером M. То есть, array и matr - один и тот же массив Улыбаюсь Тогда можно, перемещая элементы хитрым образом, опять же за один проход 1..N найти дубликат.
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #34 : 01-10-2009 12:22 » 

sss, Первый индекс у тебя есть. beg как раз на него будет указывать. Второй индекс, поиск назад значения, до тех пор, пока второй индекс не будет найден.

The Nameless One, Кстати ошибка в твоем коде. На которую наверно ты споткнулся. В случае не нахождения повтора ты возврашаеш нуль. Но по условиям задания, нуль также может быть элементом массива. Получается, при получении нуля, ты не сможеш точно определить, есть повтор или нет.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
The Nameless One
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #35 : 01-10-2009 12:51 » 

Finch, знаю) Я это учел, сделал как у Алексей1153++.
Записан
Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines