| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > найти пересечение массивов |
| Автор: Sparco 25.1.2006, 13:44 |
| Помогите с нахождением пересечения массивов... Я вот попробовал, но препод говорит что неправильно! Надо найти одинаковые числа в двух массивах и записать эти одинаковые в третий,перебирать числа надо попорядку, если совпадает то переносим в третий, если не возвращаем 0.... |
| Автор: Earnest 25.1.2006, 19:22 |
| Массивы упорядоченные? если да (или можно предварительно отсортировать), то: Вариант 1: Ptr1 = адрес первого массива, Ptr2 = адрес второго ЦИКЛ (пока один из указателей не вышел за пределы своего массива) IF *Ptr1 == *Ptr2, копируем в третий массив, Ptr1++, Ptr2++ ELSE IF *Ptr1 < *Ptr2 Ptr1++ ELSE Ptr2++; Если массивы не упорядочены, и сортировать нельзя, то остается только Вариант 2: Для каждого элемента первого массива Ищем его во втором массиве... |
| Автор: Fighter 29.1.2006, 02:25 |
| А значения в массивах повторяются? |
| Автор: nikitao 29.1.2006, 11:33 |
| Sparco,покажи тот код ,что преподу показавал.Его переделовать будем |
| Автор: Chaos A.D. 29.1.2006, 15:59 |
| Есть пара стандартных алгоритмов из STL, можно заюзать их. На память название не помню, но по-моему это adjacent_difference из <numeric>. Посмотри этот алгоритм. |
| Автор: Sparco 30.1.2006, 15:23 | ||
Вот что я пытался сделать. Использовать библиотеку нельзя.... |
| Автор: threef 30.1.2006, 18:41 | ||
| Возможно, в множествах у тебя не может быть повторяющихся элементов, тогда нет смысла в поиске совпадений в новом массиве. Возможно, они сразу отсортированы, тогда задача еще упрощается. Есть ли у тебя конструктор копирования, чтобы возвращать "с" по значению ? Могут ли твои множества сортироваться в принципе ? вот два варианта, второй - это твой без флага
если нет конструктора копирования, то "с" лучше сделать динамическим Mnogestva *c=new Mnogestva (0); и возвращать указатель... |