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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Fobos315
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
#1

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

16.05.2014, 12:16. Просмотров 1782. Ответов 18
Метки нет (Все метки)

Дан массив. Допустим я ввожу элементы 1,2,3,2,4 И нужно создать новый массив чтобы одинаковых элементов в нем не было, то есть чтобы мне вывел 1,2,3,4 Как это сделать? Желательно без векторов и т.п, т.к студент начального курса, хотелось бы разобраться на более простом примере.

Добавлено через 19 часов 27 минут
актуально.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2014, 12:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Исключить из массива все повторяющиеся элементы (C++):

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

Исключить повторяющиеся элементы из списка - C++
Не получается и всё тут! Удалять элементы умею из любой части списка, но вот именно, чтобы из списка с элементами типа int (например) 1...

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

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

Сформировать и вывести на экран новый массив, который будет содержать вначале все элементы массива A(0), затем все элементы массива B(4) - C++
Здравствуйте! Помогите написать парочку программ... 3. Даны массивы A(0) и B(4). Сформировать и вывести на экран новый массив,...

Исключить из списка целых чисел все элементы, равные х - C++
Создать список из целых чисел. Исключить из списка все элементы, равные х. Ввод-вывод данных файловый. #include <iostream> #include...

18
Vergil
42 / 36 / 14
Регистрация: 11.11.2009
Сообщений: 244
16.05.2014, 12:47 #2
Вы уверены, что такое задание? Например, у меня с такой формулировкой требовали 1 3 4. Второй вопрос, какой должен быть порядок символов? Можно ли выводить их в порядке возрастания?

Кстати, чем быстрее освоите вектор, тем лучше.
0
virtuos553
48 / 3 / 1
Регистрация: 18.12.2012
Сообщений: 247
Записей в блоге: 1
16.05.2014, 13:55 #3
Порядок обязателен?
0
Fobos315
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
16.05.2014, 14:36  [ТС] #4
В задании ничего не сказано но я думаю что да.
0
virtuos553
48 / 3 / 1
Регистрация: 18.12.2012
Сообщений: 247
Записей в блоге: 1
16.05.2014, 14:38 #5
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
#include <iostream>
using namespace std;
 
int main()
{
 
    int n,i,k,p,j,chet,i1;
    p=0;
    k=0;
    cout<<"vvedite kolvo elementov massiva"<<"\n";
    cin>>n;
    int* mas= new int [n];//заводим массив для первоначального массива который будем считывать
    for(i=0;i<n;i++)//заполняем его
        {
            
        cin>>mas[i];
        if (mas[i]==0)
        { 
            chet=1;
            i1=i;
        }
    }
 
 
    int *new_mas=new int [n];//массив в котором будут хранится элементы без повтора
    for(i=0;i<n;i++)
        new_mas[i]=0;
 
    for(i=0;i<n;i++)//берем каждый элемент массива и проверяем был ли он до него в массиввке, если его не было, тогда записываем его в наш новый массив, если был , то пропускаем.
    {
        for(j=0;j<i;j++)
        {
            if(mas[i]==new_mas[j])
            k=1;//счетчик повтора элемента
        }
 
        if(k==0)
            new_mas[p]=mas[i];
        p++;
        k=0;
    }
 
    for(i=0;i<n;i++)
    {
        if(new_mas[i]!=0)
        cout<<new_mas[i]<<" ";
        
    }
    if(chet==1)
            cout<<0;
    cout<<"\n";
 
    system("pause");
 
}


Работающий код, с правильным порядком кроме 0., если он был в массиве, то он будет в конце.

Добавлено через 1 минуту
так пойдет?
0
Fobos315
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
16.05.2014, 15:19  [ТС] #6
Да, большое спасибо! Вечером приду зайду, есть пару вопросов по коду.
1
virtuos553
48 / 3 / 1
Регистрация: 18.12.2012
Сообщений: 247
Записей в блоге: 1
16.05.2014, 16:06 #7
Хорошо, задавай, отвечу на все)
0
Fobos315
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
16.05.2014, 20:06  [ТС] #8
Не понятно тело условия, а именно: chet=1; i1=i; что взято за эти переменные, помимо i,j и n
0
outoftime
║XLR8║
511 / 433 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
16.05.2014, 20:35 #9
Fobos315, А структуры хотя бы учили?

Добавлено через 37 секунд
Если инкапсулировать часть кода можно упростить логику программы.
0
Vergil
42 / 36 / 14
Регистрация: 11.11.2009
Сообщений: 244
16.05.2014, 20:52 #10
Fobos315, не совсем уверен, но там, вроде, запоминается был ли в вашем массиве 0, потому что массив без повторений заполняется 0. Т.е. при массиве 1 2 3 2 без повторений будет выглядеть так 1 2 3 0, а до этого 0 0 0 0.
Если мы будем проверять и в исходном будет 0, то он посчитает, что число уже повторялось и не запишет его
i1 я при беглом просмотре больше нигде не увидел, так что думаю, что он был написан, что бы вставить 0 не в конец, а в нужное место, но потом virtuos553 передумал.
0
Fobos315
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
16.05.2014, 21:02  [ТС] #11
outoftime ещё нет.

Добавлено через 3 минуты
Vergil с нас больше требуют чем что то дают, зато матан дают как будто преподами будем))
0
Vergil
42 / 36 / 14
Регистрация: 11.11.2009
Сообщений: 244
16.05.2014, 21:07 #12
Fobos315, не совсем понял к чему это?
Vergil с нас больше требуют чем что то дают, зато матан дают как будто преподами будем))
Если вы думаете, что один такой, то все так мучаются. Инженеру вполне может понадобится матан. Например для написания какого-нибудь мат пакета.
Если бы вы поучились на матфаке,
зато матан дают как будто преподами будем
, наверное, не писали бы

кстати, на векторах эта программа была бы легче. Советую досрочно их изучить самостоятельно.
0
Fobos315
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
16.05.2014, 21:27  [ТС] #13
Vergil может вы мне какую нибудь книгу посоветуете по С++ Где доступно для начинающего объясняются массивы, функции, векторы и т.д..
0
virtuos553
48 / 3 / 1
Регистрация: 18.12.2012
Сообщений: 247
Записей в блоге: 1
16.05.2014, 21:35 #14
да , верно, хотел написать код чтобы вставить в нужное место, но времени было в обрез, поэтому в конец вставил)
0
outoftime
║XLR8║
511 / 433 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
16.05.2014, 21:39 #15
Цитата Сообщение от Fobos315 Посмотреть сообщение
Vergil может вы мне какую нибудь книгу посоветуете по С++ Где доступно для начинающего объясняются массивы, функции, векторы и т.д..
Могу написать пару вариантов, в ты потом методом упорного гугление, и вопросов, если не понятно, все будешь знать (:
0
16.05.2014, 21:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2014, 21:39
Привет! Вот еще темы с ответами:

Найти все повторяющиеся элементы вектора - C++
Создать программу, которая вводит c клавиатуры (с обработкой ошибок) массив целых чисел, находит в нем все повторяющиеся последовательности...

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

Повторяющиеся элементы массива - C++
Есть произвольный массив, в котором нужно отсортировать повторяющиеся элементы по уменьшению и вывести общее кол-во повторений. Решил...

Все повторяющиеся элементы переставить в самое начало - C++
Все повторяющиеся элементы переставить в самое начало.Вот мой код.Не могу понять почему не правильно работает,вроде бы все должно работать....


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

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

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