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

Вывести уникальные элементы массива

11.01.2018, 22:58. Показов 13549. Ответов 37
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Кто поможет решить на c++ такую задачу. В массиве имеются различные элементы (пример: a[ ]={1,6,2,3,3,4,2,5,1}) нужно вывести разные(не равные) элементы этого массива (т.е. a[i]=4,5,6).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.01.2018, 22:58
Ответы с готовыми решениями:

Вывести уникальные элементы массива
напишите программу, печатающую уникальные элементы массива из 20 элементов.

Найти и вывести уникальные элементы массива
3. В массиве найти элементы, которые в нем встречаются только один раз, и вывести их на экран. То...

Вывести на экран "уникальные" элементы массива
1 Есть массив, вывести на экран все элементы, которые встречаются хотя-бы дважды 2 Вывести на...

Вывести на экран уникальные элементы вектора стринг
Я перепробовал множество способов, просмотрел темы на этом форуме, но для стрингового вектора ни...

37
outoftime
06.02.2018, 13:36     Вывести уникальные элементы массива
  #21

Не по теме:

Цитата Сообщение от GbaLog- Посмотреть сообщение
и что вы хотели этим сказать?
100 раз уже давал примеры с мапой. Свои ответы писать пишут, а чужие не смотрят совсем.

0
0 / 0 / 0
Регистрация: 11.01.2018
Сообщений: 22
06.02.2018, 15:06  [ТС] 22
outoftime, Вообще мне необходимо делить принятую комбинацию(к примеру X68) на образующий полином(x16+x12+x5+1). Для своего упрощения я взял только степени. Для того чтоб разделить мне нужно узнать max элемент 1 и 2-ого массива, их между собой вычесть, получившееся значение прибавить к каждому элементу 2-ого массива, получившийся 3-й массив совместить с 1-ым и который получился можно перезаписать в 1-й и затем все повторять до тех пор пока max элемент 1-ого массива не станет меньше max элемента 2-ого. А из начального условия я хотел дополнить свой код.
0
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
06.02.2018, 17:56 23
Germani, вот ну прям ни разу проще не стало. Какая задача то?
0
0 / 0 / 0
Регистрация: 11.01.2018
Сообщений: 22
06.02.2018, 18:02  [ТС] 24
outoftime,С учетом всех вышеуказанных корректив
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
#include <iostream>
 
using namespace std;
 
int main()
{
    const int *y = new int[4] {0,5,12,16};
    int *x = new int[12] {68};
    int *a = new int[4];
    int *A = new int[16];
    int i, z, q=0;
    int maxy, maxx;
    for(i=0;i<4;i++)
    { if(q<y[i])maxy=y[i];}
    for(i=0;i<12;i++)
    { if(q<x[i])maxx=x[i];}
    cout <<"Max_x="<< maxx <<" "<<"Max_y="<< maxy;
    cout << endl;
    for (int i=0; i<4; ++i)
    {   z = maxx - maxy;
        a[i] = z + y[i];}
 
    for (int i=0; i<4; i++)
    A[i]=a[i];
    for (int i=0; i<12; i++)
    A[i+4]=x[i];
 
    for (int i=0; i<16; ++i)
    {cout <<"A="<< A[i] << " ";}
    cout << endl;
//почему-то не работает следующий блок
    for (int j = 0; j <= 18; j++)
    {
    int k=0;
    for (i = 0; i < 16; i++)
    if (A[i]==j) k++;
    if (k==1) cout <<j<<"  ";
    }
 
    delete [] A;
    delete [] x;
    delete [] y;
    delete [] a;
 
    system("pause");
    return 0;
}
Я не дописал, получившийся 3-й массив совместить с 1-ым и который получился массив из него нужно записать в 1-й только те элементы которые не повторяются и затем все повторять до тех пор пока max элемент 1-ого массива не станет меньше max элемента 2-ого. А из начального условия я хотел дополнить свой код.
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.02.2018, 18:26 25
Germani, посмотрите как находится максимум массива (выше сбрасывал блок)
0
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
06.02.2018, 18:28 26
Germani, нет, вы не правильно поняли. Меня не интересует ваша реализация или то как вы видите решение. Какая задача?
0
0 / 0 / 0
Регистрация: 11.01.2018
Сообщений: 22
06.02.2018, 20:08  [ТС] 27
outoftime, необходимо делить принятую комбинацию(к примеру X68) на образующий полином(x16+x12+x5+1). Для своего упрощения я взял только степени.
0
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
06.02.2018, 20:36 28
Germani, у меня, видимо, жесткий пробел по дискретке вы это имеете в виду http://rain.ifmo.ru/cat/view.p... yclic-2005 ?
0
0 / 0 / 0
Регистрация: 11.01.2018
Сообщений: 22
06.02.2018, 20:39  [ТС] 29
outoftime, да об этом
0
GbaLog-
07.02.2018, 07:17
  #30

Не по теме:

Цитата Сообщение от outoftime Посмотреть сообщение
100 раз уже давал примеры с мапой.
вы молодец.
Цитата Сообщение от outoftime Посмотреть сообщение
Свои ответы писать пишут, а чужие не смотрят совсем.
а они обязаны?
то, что вы, внезапно, написали свою реализацию, не запрещает никому писать свои реализации.
пускай они будут хоть велосипедные.
и у вас, например, в отличии от Hitoku, перерасход по памяти получается.
может и по скорости проиграет, я не тестировал.
так что ваша реализация не идеальна, как и его, как и другие.

0
0 / 0 / 0
Регистрация: 11.01.2018
Сообщений: 22
07.02.2018, 19:58  [ТС] 31
Yetty,
C++
1
imax=i;
здесь imax это переменная или функция.
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
08.02.2018, 00:44 32
Germani, imax - это переменная, которая после завершения цикла примет значение номера последнего найденного максимума массива. когда Вы уже всё примените и сбросите что получилось ?
0
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
08.02.2018, 01:08 33
Germani,
Цитата Сообщение от Лермонтов М. Ю.
Смешались в кучу кони, люди,
И залпы тысячи орудий
Слились в протяжный вой...
Создайте новую тему с вопросом касательно образующего полинома.
0
0 / 0 / 0
Регистрация: 11.01.2018
Сообщений: 22
09.02.2018, 16:07  [ТС] 34
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
37
#include <iostream>
using namespace std;
int main()
{
    const int *y = new int[4] {0,5,12,16};
    int *x = new int[12] {68};
    int *a = new int[4], *A = new int[16];
    int i, z, maxy, maxx, imax;
 
    for(i=0; i<4;  i++) if(i==0 || y[i]>=maxy) { maxy=y[i]; imax=i; }
    for(i=0; i<12; i++) if(i==0 || x[i]>=maxx) { maxx=x[i]; imax=i; }
 
    cout <<"Max_x="<< maxx <<" "<<"Max_y="<< maxy << endl;
 
    for(int i=0; i<4; ++i)
    {   z = maxx - maxy;
        a[i] = z + y[i]; }
 
    for(int i=0; i<4;  i++) A[i]  =a[i];
    for(int i=0; i<12; i++) A[i+4]=x[i];
 
    for(int i=0; i<16; ++i) {cout <<"A="<< A[i] << " ";}
    cout << endl;
 
    for(i = 0; i < 18; i++)
    {
    int k=0;
    for (int j = 0; j < 16; j++)
    if (A[j]==i) k++;
    if (k==1) cout <<i<<"  ";
    }
 
    delete [] A; delete [] x; delete [] y; delete [] a;
 
    system("pause");
    return 0;
}
Миниатюры
Вывести уникальные элементы массива  
0
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
09.02.2018, 16:22 35
Germani, ссылаться на ник можно и в другой теме, эта, на сколько я понимаю, - решена.

Правила https://www.cyberforum.ru/cpp-... ment3.html
5.16 Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов платных услуг. Один вопрос - одна тема.
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
09.02.2018, 16:22 36
Germani, так хоть смотреть можно. что по-Вашему делает строка 6 ? с 19 строки для компактности можно убрать цикл, а A[i] =a[i]; поставить последней строкой цикла строки 15.
imax можно убрать если не используете.
так что собственно скажете? работает как Вы хотели ?
0
Новичок
10.02.2018, 08:08
  #37

Не по теме:

Цитата Сообщение от GbaLog- Посмотреть сообщение
и у вас, например, в отличии от Hitoku, перерасход по памяти получается.
может и по скорости проиграет, я не тестировал.
На больших массивах решение с map выиграет по времени и очень сильно. У Hitoku сложность O(N2), а если можно написать что-то быстрее квадрата, то почему бы это не сделать?! Конечно тут лучше отсортировать массив и посчитать сколько раз входит каждый элемент и тогда дополнительная память либо не нужна, либо ее меньше понадобится в зависимости от того нужно ли хранить исходный массив.

0
Комп_Оратор)
Эксперт по математике/физике
8949 / 4703 / 629
Регистрация: 04.12.2011
Сообщений: 13,999
Записей в блоге: 16
10.02.2018, 10:52 38
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
#include <iostream>
#include <ctime>
using namespace std;
//без std::set algorithm (unique) и прочей лабуды.  
//код вырублен из полена тупым топором, - просьба не ругать.
int main(int argc, char* argv[])
{
const int sz=20;
int a[sz], uniq[sz], uniq_sz(0);
srand((int)time(0));
for(int i=0; i<sz; ++i){
cout<<(a[i] = rand()%sz)<<' ';
}
cout<<endl;
cout<<(uniq[0]=a[0])<<' ';//первый всегда уникален, а второй всегда если не равен первому и т.д.
//если бы я мог это обобщить - был бы системным аналитиком. Или даже системным администратором(!!)
++uniq_sz;
for(int i=1; i<sz; ++i){
    bool found(false);
    for(int j=0; j<uniq_sz; ++j){
        if(a[i]==uniq[j]){
            found=true;
                break;
        }
        
    }
    if(!found){
            cout << (uniq[uniq_sz++]=a[i]) <<' ';
 
    }
}
cout<<endl;
system("pause");
return 0;
}
0
10.02.2018, 10:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.02.2018, 10:52
Помогаю со студенческими работами здесь

Вывести уникальные элементы двух динамических массивов
Дано два динамических массива одинаковой размерности. Нужно вывести уникальные элементы. Мой код...

Найти уникальные элементы массива
пожалуйста объясните написанный код include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;math.h&gt;...

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

Из заданного массива случайных чисел записать в результирующий массив только уникальные элементы
Описать целочисленный массив из 20 элементов. Заполнить его случайными значениями в диапазоне от...


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

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

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