Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2013, 20:50   #1
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию Удалить из массива все элементы, значение которых в этом массиве повторяются, оставив по одному.

Нужна помощь в написание кода программы: Язык С.

Последний раз редактировалось East Undia Trading; 22.10.2013 в 21:08.
East Undia Trading вне форума Ответить с цитированием
Старый 22.10.2013, 21:00   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Удалить из массива это означает "создать новый массив на месте старого"?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.10.2013, 21:08   #3
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

Stilet, можно иначе?
East Undia Trading вне форума Ответить с цитированием
Старый 22.10.2013, 21:15   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Stilet, можно иначе?
Ну.. можно сдвигать влево элементы, тем самым удаляя элемент, можно завести новый массив, кидая туда неповторяющиеся элементы, а затем скопировать его в исходный..
У каждого свои + и -..
Первое не требует доп. памяти, но имеет сложность порядка O(N^2)..
Второй же вариант имеет сложность O(N), но требует доп память..
Poma][a вне форума Ответить с цитированием
Старый 22.10.2013, 21:27   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Допустим вот:
http://www.programmersforum.ru/showthread.php?t=113204
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.10.2013, 21:32   #6
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

Stilet, мне нужно с помощью нового массива, пожалуйста.
East Undia Trading вне форума Ответить с цитированием
Старый 22.10.2013, 21:35   #7
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Я бы наработки с удовольствием посмотрел.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 22.10.2013, 21:38   #8
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Код:
cnt = 0;
for (i = 0; i < n; i++) 
{
     int j = 0;
     while (j < cnt && a[i] != b[j]) j++;
     if (j == cnt)  b[cnt++] = a[i];
 }
Не проверял..

Ошибся я.. там будет N^3 и N^2..
Poma][a вне форума Ответить с цитированием
Старый 22.10.2013, 21:40   #9
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

Bugrimov,
Код:
int M[25];
int k = 25;
int i, j;
for(i = 0; i < k; i++)
    for(j = i +1; j < k; j++)
         if(M[i] == M[j])
         { //тут должен быть способ решения этой задачи
                --k;
          }
Bugrimov, ваш ход.

Ваши предложения, Господа.

Последний раз редактировалось Stilet; 22.10.2013 в 22:33.
East Undia Trading вне форума Ответить с цитированием
Старый 23.10.2013, 06:58   #10
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Предложение подумать принимается?
Что получается из Вашего алгоритма при массиве, допустим, 1,1,2,1,2,1,2,2?
А получается 1,2,1,2,1,2 вместо 1,2, если я правильно все понял.

Алгоритм(первый, для одного массива) следующий:
1) Отсортировать массив по возрастанию;
2) Последовательно сравнивать элементы, сдвигая массив влево при совпадении

Алгоритм(второй, опять же для одного массива) следующий:
1) Для каждого элемента делай
1.1) Если элемент не входит во множество имеющихся - внести элемент во множество
1.2) Если элемент есть во множестве имеющихся - сдвинуть массив на 1 влево

Успехов.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сформировать новый массив, содержащий повторяющиеся элементы массива A. Элементы в новом массиве не повторяются(Pascal) mad_putin Помощь студентам 0 13.12.2012 00:09
Удалить из массива все элементы, последняя цифра которых нечетная и сжать массив.(через процедуры и функции) Proskurina Паскаль, Turbo Pascal, PascalABC.NET 5 23.09.2012 12:43
Удалить из массива все элементы, последняя цифра которых нечетная и сжать массив Proskurina Помощь студентам 4 21.09.2012 23:02
Упорядочить по убыванию столбцы матрицы, все элементы которых присутствуют в массиве. Gluck231 Помощь студентам 0 19.01.2012 09:59
Удалить слова, в которых буквы повторяются Artoo Помощь студентам 0 16.12.2011 22:09