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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 102, средняя оценка - 4.95
RAMON@
0 / 0 / 0
Регистрация: 07.11.2009
Сообщений: 67
#1

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

16.01.2010, 10:52. Просмотров 14147. Ответов 11
Метки нет (Все метки)

Удалить из массива повторяющиеся элементы.жду вашим решений
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2010, 10:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удалить из массива повторяющиеся элементы (C++):

Из массива удалить все повторяющиеся элементы - C++
Из заданного целочисленного массива удалить все повторяющиеся элементы, оставив только их первые вхождения, т.е. из заданного массива...

Как удалить из исходного массива не повторяющиеся элементы? - C++
Вводится длина одномерного массива и значения его элементов. Удалить из исходного массива уникальные (не повторяющиеся) элементы. Результат...

Скрыть или удалить повторяющиеся элементы массива - C++
Вот сама задача. Даны два массива. Массив А состоит из N элементов , массив В состоит из М элементов. Оба массива отсортировать по не...

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

Удалить из массива повторяющиеся элементы, оставив только их первые вхождения - C++
Помогите, зачёт пишу

Удалить из массива повторяющиеся элементы, оставив только их первые вхождения - C++
Как мне удалять повторяющийся элемент? #include <iostream> using namespace std; int main () {float a; int n,k=0; cout<<"n=";...

11
Darky
Быдлокодер
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
16.01.2010, 10:52 #2
Из массива нельзя удалить элементы.
0
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--; // Возврат к предыдущему индексу
}
0
TanT
эволюционирую потихоньку
465 / 463 / 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;
 
}
1
ISergey
Maniac
Эксперт С++
1376 / 887 / 53
Регистрация: 02.01.2009
Сообщений: 2,663
Записей в блоге: 1
16.01.2010, 11:26 #5
RAMON@, Размер массива не поменялся.. был изменен логический конец массива..
0
RAMON@
0 / 0 / 0
Регистрация: 07.11.2009
Сообщений: 67
16.01.2010, 11:37  [ТС] #6
а как надо тоггда?
0
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
16.01.2010, 11:42 #7
Цитата Сообщение от RAMON@ Посмотреть сообщение
а как надо тоггда?
это смотря что тебе надо: можно перезаписать оставшиеся элементы в новый массив, а старый удалить.
0
RAMON@
0 / 0 / 0
Регистрация: 07.11.2009
Сообщений: 67
16.01.2010, 11:49  [ТС] #8
мне надо самое простое решение.. со всеми библиотеками... у меня экзамен сення хоть пару примеров написать в конспект
0
Darky
Быдлокодер
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
16.01.2010, 11:56 #9
RAMON@, Приведенный Вами пример - смещение элементов, но никак не удаление. Повторяю - удалить элементы из массива нельзя.
0
RAMON@
0 / 0 / 0
Регистрация: 07.11.2009
Сообщений: 67
16.01.2010, 12:00  [ТС] #10
Цитата Сообщение от Darky Посмотреть сообщение
RAMON@, Приведенный Вами пример - смещение элементов, но никак не удаление. Повторяю - удалить элементы из массива нельзя.
ну тогда сместите все эти элементы..
0
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;}
0
Skjame
85 / 44 / 8
Регистрация: 20.12.2010
Сообщений: 213
Записей в блоге: 1
Завершенные тесты: 1
21.12.2010, 19:17 #12
что вы так придираетесь к словам, это лаба по с++ с первого курса, естевственно тут надо просто "спрятать" повторяющие элементы, переместив логический конец цикла.
0
21.12.2010, 19:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.12.2010, 19:17
Привет! Вот еще темы с ответами:

удалить из массива повторяющиеся элементы, оставив только их первые вхождения. класс-контейнер вектор - C++
Добрый день!!! Не могли бы помочь написать программу на С++ при помощи класса-контейнера вектора. вот код)) Заранее спасибо! #include...

Удалить повторяющиеся элементы списка - C++
Есть список в виде класса. Нужно удалить повторяющиеся элементы, вернее, чтобы каждого было по одному. (например, вводится 1 2 3 3 4 4, а...

Удалить все повторяющиеся элементы в векторе - C++
доброго времени суток. Столкнулся с проблемой удаления лишних повторов чисел в векторе. Задача состоит в следующем: записать число...

Удалить повторяющиеся элементы в отсортированнном массиве - C++
пример такого массива I={0,1,3,3,3,5,6,8,10,10} Т.е. я так понимаю, нужно сдигать все элементы при повторении влево, и записывать в инт...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru