Форум программистов, компьютерный форум CyberForum.ru

Удалить из массива повторяющиеся элементы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 102, средняя оценка - 4.95
RAMON@
0 / 0 / 0
Регистрация: 07.11.2009
Сообщений: 67
16.01.2010, 10:52     Удалить из массива повторяющиеся элементы #1
Удалить из массива повторяющиеся элементы.жду вашим решений
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2010, 10:52     Удалить из массива повторяющиеся элементы
Посмотрите здесь:

удалить из массива повторяющиеся элементы, оставив только их первые вхождения. класс-контейнер вектор C++
C++ Как удалить из исходного массива не повторяющиеся элементы?
C++ Удалить повторяющиеся элементы списка
Удалить повторяющиеся элементы в отсортированнном массиве C++
Удалить повторяющиеся элементы из двух векторов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Darky
Быдлокодер
 Аватар для Darky
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
16.01.2010, 10:52     Удалить из массива повторяющиеся элементы #2
Из массива нельзя удалить элементы.
RAMON@
0 / 0 / 0
Регистрация: 07.11.2009
Сообщений: 67
16.01.2010, 11:04  [ТС]     Удалить из массива повторяющиеся элементы #3
ну как нельзя...
Пример 2. Удалить из одномерного массива все отрицательные элементы
Для решения данной задачи необходимо выполнить следующие действия:
C
1
2
3
4
5
6
7
8
9
for (i=0; i<n; i++)
if (a[i]<0) // Если найден отрицательный элемент, то
{
for (j=i+1; j<n; j++) // сдвинуть все элементы, стоящие
a[j-1]=a[j]; // после удаляемого на одну позицию
n--; // Уменьшение размера массива
i--; // Возврат к предыдущему индексу
}
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
16.01.2010, 11:19     Удалить из массива повторяющиеся элементы #4
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <stdio.h>
#include <conio.h>
 
int main ()
{
    int p[50];
    int i, n, j;
    int count=1;      // счётчик не повторяющихся символов
    float   res;
 
    printf("\nEnten number of elements: ");
    scanf("%u",&n);
    printf("\nEnter elements: ");
    for (i=0; i<n; i++)
        scanf("%u",&p[i]);
 
    int temp=p[0];  // певый символ исходного массива будет маркером
    for (i=1; i<n; i++)  // перебор всего массива без первого
    {
        if(p[i]!=temp)     // если символ не равен маркеру
        {
            for (j=i+1; j<n; j++)  // перебор от следующего за рассмотр. символом
                if(p[i]==p[j])     // если символы совпали
                    p[j]=temp;       // маркируем повторяющиеся
            count++;            // увеличиваем счётчик
        }
    }
    printf("\n Test: ");
    for (i=0; i<n; i++) 
    {
        printf(" %i", p[i]);
        // должны получить следующее
        // был массив: 1 2 3 4 5 5 5 3 3 ПРИМЕР!!!
        // стал      : 1 2 3 4 5 1 1 1 1 
    }
 
 
    printf("\n");
    count=0;
    // теперь удаляем все маркированные элементы
    for (i=1; i<n; i++) 
    {
        if (p[i]!=p[0])     p[++count]=p[i];
    }
 
 
    printf("\n");
  // итого
    for (i=0; i<=count; i++) 
    {
        printf(" %i", p[i]);
    }
    getch();
    return 0;
 
}
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1331 / 864 / 50
Регистрация: 02.01.2009
Сообщений: 2,622
Записей в блоге: 1
16.01.2010, 11:26     Удалить из массива повторяющиеся элементы #5
RAMON@, Размер массива не поменялся.. был изменен логический конец массива..
RAMON@
0 / 0 / 0
Регистрация: 07.11.2009
Сообщений: 67
16.01.2010, 11:37  [ТС]     Удалить из массива повторяющиеся элементы #6
а как надо тоггда?
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
16.01.2010, 11:42     Удалить из массива повторяющиеся элементы #7
Цитата Сообщение от RAMON@ Посмотреть сообщение
а как надо тоггда?
это смотря что тебе надо: можно перезаписать оставшиеся элементы в новый массив, а старый удалить.
RAMON@
0 / 0 / 0
Регистрация: 07.11.2009
Сообщений: 67
16.01.2010, 11:49  [ТС]     Удалить из массива повторяющиеся элементы #8
мне надо самое простое решение.. со всеми библиотеками... у меня экзамен сення хоть пару примеров написать в конспект
Darky
Быдлокодер
 Аватар для Darky
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
16.01.2010, 11:56     Удалить из массива повторяющиеся элементы #9
RAMON@, Приведенный Вами пример - смещение элементов, но никак не удаление. Повторяю - удалить элементы из массива нельзя.
RAMON@
0 / 0 / 0
Регистрация: 07.11.2009
Сообщений: 67
16.01.2010, 12:00  [ТС]     Удалить из массива повторяющиеся элементы #10
Цитата Сообщение от Darky Посмотреть сообщение
RAMON@, Приведенный Вами пример - смещение элементов, но никак не удаление. Повторяю - удалить элементы из массива нельзя.
ну тогда сместите все эти элементы..
Aelin
0 / 0 / 0
Регистрация: 08.04.2010
Сообщений: 26
19.07.2010, 14:28     Удалить из массива повторяющиеся элементы #11
TanT, а можно как-то изменить эту часть(напр. записывая элементы до повтора в новый массив -text1), чтобы у меня каждого символа было по одному разу? :
C++
1
2
3
4
5
       // теперь удаляем все маркированные элементы
        for (i=1; i<n; i++) 
        {
                if (p[i]!=p[0])         p[++count]=p[i];
        }
Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
   int k,j;
          int z=1;
          nt t=text[0];
  for(j=1;j<size;j++)
     {
       if(text[j]!=t)
        {
          for(k=j+1;k<size;k++)
             {
               if(text[j]==text[k])
               text[k]=t;
               z++;
              }
        }
      }
  z=0;
 for(j=1;j<size;j++)
  {
if (text[j]!=text[0]) text[++z]=text[j];
  }
  for(j=0;j<=z;j++)
  { Memo1->Lines->Delete(i);
  Memo1->Lines->Insert(i,text); //Здесь нужно заменить массив text на text1
  Memo2->Text=Memo1->Text;}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.12.2010, 19:17     Удалить из массива повторяющиеся элементы
Еще ссылки по теме:

C++ Массив. Удалить из исходного массива уникальные (не повторяющиеся) элементы
C++ Удалить все повторяющиеся элементы в векторе
Удалить из массива повторяющиеся элементы, оставив только их первые вхождения C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Skjame
 Аватар для Skjame
26 / 16 / 3
Регистрация: 20.12.2010
Сообщений: 88
21.12.2010, 19:17     Удалить из массива повторяющиеся элементы #12
что вы так придираетесь к словам, это лаба по с++ с первого курса, естевственно тут надо просто "спрятать" повторяющие элементы, переместив логический конец цикла.
Yandex
Объявления
21.12.2010, 19:17     Удалить из массива повторяющиеся элементы
Ответ Создать тему
Опции темы

Текущее время: 17:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru