0 / 0 / 0
Регистрация: 24.11.2018
Сообщений: 5
1

Удаление в массиве повторяющихся элементов

24.11.2018, 11:54. Показов 20013. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Мое задание звучит следующим образом:Создать программу которая удаляет повторяющиеся элементы(но удаляет их копии,тоесть если в массиве встретить два элемента 2 2 то одну двойку он должен удалить,а вторую оставить)и вывести на экран уникальный массив в котором нет копий одинаковых элементов.До: [1,2,3,4,1,2,3,4,4]-> После [1,2,3,4] .Суть такова,в коде у меня должно быть,как я понял, три цикла : первый создаёт массив,второй проверяет на повторяемость,третий удаляет все повторяющиеся элементы.Но реализовать у меня не вышло,вот в чем загвоздка,буду благодарен за код с комментариями.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.11.2018, 11:54
Ответы с готовыми решениями:

Удаление повторяющихся значений в массиве
arr1 - исходный массив arr2 - новый массив без повторов cnt1 - число строк arr1 cnt2 -...

Удаление повторяющихся элементов
Всем доброго времени суток! Возникла такая проблема: не удаляет некоторые повторяющиеся элементы в...

Удаление из вектора повторяющихся элементов
есть вектор vector<int> array; я считаю в него из файла, подскажите как мне удалить одинаковые...

Удаление повторяющихся элементов из списка
Всем привет! Прошу помощи, надо написать функцию удаления всех повторяющихся элементов из списка....

7
es geht mir gut
11270 / 4752 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
24.11.2018, 12:01 2
Цитата Сообщение от Stayonctrv Посмотреть сообщение
Но реализовать у меня не вышло
Покажите, что вышло.
Цитата Сообщение от Stayonctrv Посмотреть сообщение
буду благодарен за код с комментариями.
А блок-схему не надо ?
0
0 / 0 / 0
Регистрация: 24.11.2018
Сообщений: 5
24.11.2018, 12:15  [ТС] 3
Много лишних библиотек,но суть в коде,я налажал.Нужна помощь
#include <iostream>
#include <cmath>
#include <cstdio>
#include <ctype.h>
#include <windows.h>
#include <ctime>
#include <cstdlib>
#include <qrandom.h>
#include <string>
using namespace std;
void CreatureArray( int & sizen , int mas [] );
void delete1(int & sizen,int mas [], int & l );
void DetectingEl(int & sizen,int mas [],int & l);


int main(){
int sizen;
int l;
int mas [ sizen ];
int var;
s : cout<<'\n'<<"1 - Creature New Array \n2 - If you want delete repeted elements,select this item\n3 - exit"<<endl;
cin >> var;
cin. ignore ();
switch(var)
{
case 1: { CreatureArray( sizen, mas ) ; break;}
case 2: { DetectingEl( sizen, mas,l ) ; break;}
case 3: { exit(0) ; break;}
}
goto s;
}

void CreatureArray( int & sizen , int mas[] ){

cout<<"Enter elements of Array ";
cin>>sizen;
for(int i = 0 ; i < sizen ; i++)
{
cout<<"["<<i+1<<"]"<<":";
cin >> mas[i];
}
cout<<" Array : ";
for(int i = 0 ; i < sizen ; i++){
cout<<mas[i]<<" ";
}
cout<<endl;
}
void DetectingEl(int & sizen,int mas [], int & l){

for (;;){

for (int n = 1 ;n < sizen; n ++ ){
l = mas[n];
n++;
delete1( sizen , mas ,l );
}

cout<<" Array : ";
for(int i = 0 ; i < sizen ; i++){
cout<<mas[i]<<" ";
}cout<<endl;
break;
}
}
void delete1( int & sizen , int mas [] , int & l ){

for(int i = 0 ; i < sizen; ){
if(mas[i] == l){
sizen = sizen - 1;
for (int j = i ; j < sizen ; j ++ )
mas[ j ] = mas [ j + 1 ];

}i ++;
}


}
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
24.11.2018, 13:29 4
Лучший ответ Сообщение было отмечено Stayonctrv как решение

Решение

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
#include <iostream>
#include <ctime>
using namespace std;
 
int main()
{
    srand((int)time(0));
    int n;
    cout <<"n="; cin >>n;
 
    double*a = new double[n];
 
    for (int i = 0; i < n; i++)
      {
      a[i]=rand()%5 + 1;
      cout <<a[i]<<" ";
      }
    cout <<endl;
    
    for (int i = 0; i < n - 1; i++) 
    for (int j = i + 1; j < n; j++) 
    if (a[i]==a[j]) 
        { 
        for (int k = j; k < n; k++) 
        a[k]=a[k + 1]; 
        n--;
        j--;
        } 
    
    for (int i = 0; i < n; i++)
      cout <<a[i]<<" ";
      cout <<endl;
    delete[]a;
system("pause");
return 0;
}
не знаю что тут особо комментировать, если будут вопросы задавайте
1
4 / 4 / 0
Регистрация: 10.11.2018
Сообщений: 25
24.11.2018, 13:32 5
Я бы создал два массива. Первый исходный, второй результат. Из первого массива переносил значения которых нет во втором.
0
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
24.11.2018, 13:44 6
Если порядок не важен, то sort + unique.
0
0 / 0 / 0
Регистрация: 24.11.2018
Сообщений: 5
24.11.2018, 13:55  [ТС] 7
Цитата Сообщение от Yetty Посмотреть сообщение
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
#include <iostream>
#include <ctime>
using namespace std;
 
int main()
{
    srand((int)time(0));
    int n;
    cout <<"n="; cin >>n;
 
    double*a = new double[n];
 
    for (int i = 0; i < n; i++)
      {
      a[i]=rand()%5 + 1;
      cout <<a[i]<<" ";
      }
    cout <<endl;
    
    for (int i = 0; i < n - 1; i++) 
    for (int j = i + 1; j < n; j++) 
    if (a[i]==a[j]) 
        { 
        for (int k = j; k < n; k++) 
        a[k]=a[k + 1]; 
        n--;
        j--;
        } 
    
    for (int i = 0; i < n; i++)
      cout <<a[i]<<" ";
      cout <<endl;
    delete[]a;
system("pause");
return 0;
}
не знаю что тут особо комментировать, если будут вопросы задавайте
Что вы сделали в 26-27 строчке с элементами массива?
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
24.11.2018, 14:09 8
не выделяйте код - зачем его дублировать ?
Цитата Сообщение от Stayonctrv Посмотреть сообщение
Что вы сделали в 26-27 строчке с элементами массива?
в этих строках декрементируются (уменьшаются на единицу) значения j (индекс элемента для сравнения) и значение n (размер массива)
0
24.11.2018, 14:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.11.2018, 14:09
Помогаю со студенческими работами здесь

Удаление из массива повторяющихся элементов
Значит,задача : удалить повторы в массиве, оставив по одному вхождению! моя идея. если 2...

Удаление повторяющихся элементов в векторе
Нужно перегрузить унарный оператор ~ что бы он удалял повторяющиеся элементы в векторе vector&amp; ...

Удаление повторяющихся элементов списка
Всем привет, подкиньте пожалуйста идею, как можно реализовать удаление повторяющихся элементов...

Удаление повторяющихся элементов из вектора строк
Всем доброго времени суток. Как можно удалить из вектора все повторяющиеся элементы? Например: ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru