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

Найти уникальные элементы в массиве - C++

Восстановить пароль Регистрация
 
Jamguranga
1 / 1 / 0
Регистрация: 08.01.2013
Сообщений: 36
15.10.2013, 20:52     Найти уникальные элементы в массиве #1
Ребята нужна помощь, у меня есть массив, к примеру:
O O O O
O l l O O
P O O O

А мне нужно найти и вывести O,l,P, то есть элементы, так сказать, без их "клонов", набросков нет, точнее есть, но там полный бред, так как не могу понять самого алгоритма. как это делать, помогите, пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2013, 20:52     Найти уникальные элементы в массиве
Посмотрите здесь:

C++ Дан массив целых чисел. Определить все уникальные числа в массиве и сколько раз каждое из них встречается в массиве.
в одномерном массиве А состоящем из N элементов найти максимальные элементы и все элементы равные максимальному заменить на 0. C++
Найти в массиве минимальный и максимальный элементы. Вывести последовательность значений из этого диапазона, не встречающихся в данном массиве C++
C++ Найти в массиве максимальный и минимальный элементы в массиве и их количество
C++ В двухмерном массиве найти максимальный и минимальный элементы и их координаты в массиве
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
15.10.2013, 20:53     Найти уникальные элементы в массиве #2
если ты объяснишь мне так чтобы я понял, я постараюсь тебе помочь)
Jamguranga
1 / 1 / 0
Регистрация: 08.01.2013
Сообщений: 36
15.10.2013, 20:57  [ТС]     Найти уникальные элементы в массиве #3
Цитата Сообщение от dzrkot Посмотреть сообщение
если ты объяснишь мне так чтобы я понял, я постараюсь тебе помочь)
В общем есть массив, который расписан выше, из него нужно достать элементы только в 1 экземпляре, например "а н н а" - тут я должен вывести "а" и "н", смысл тот же, только нужно в двухмерном такое провернуть.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
15.10.2013, 21:04     Найти уникальные элементы в массиве #4
Цитата Сообщение от Jamguranga Посмотреть сообщение
В общем есть массив, который расписан выше, из него нужно достать элементы только в 1 экземпляре, например "а н н а" - тут я должен вывести "а" и "н", смысл тот же, только нужно в двухмерном такое провернуть
а[0][0] записываешь в b[0], потом в цикле for()for() сравниваешь между собой а[0][0] и все элементы до первого !=, скажем а[0][0] с а[i][j], если они !=, то записываешь а[i][j] в одномерный массив в b[1], после чего все те, которые == а[0][0], заменяешь на то, с чем a[0][0] != в начале. Дальше след сравниваешь до первого != и так же меняешь. Ну я бы так сделал. Это навскидку.
Можно изящнее, но у меня футбол поэтому я был огранчиен 5 минутами)) завтра помогу тебе с готовым решением если не сделает никто другой)
Jamguranga
1 / 1 / 0
Регистрация: 08.01.2013
Сообщений: 36
15.10.2013, 23:34  [ТС]     Найти уникальные элементы в массиве #5
Цитата Сообщение от dzrkot Посмотреть сообщение
а[0][0] записываешь в b[0], потом в цикле for()for() сравниваешь между собой а[0][0] и все элементы до первого !=, скажем а[0][0] с а[i][j], если они !=, то записываешь а[i][j] в одномерный массив в b[1], после чего все те, которые == а[0][0], заменяешь на то, с чем a[0][0] != в начале. Дальше след сравниваешь до первого != и так же меняешь. Ну я бы так сделал. Это навскидку.
Можно изящнее, но у меня футбол поэтому я был огранчиен 5 минутами)) завтра помогу тебе с готовым решением если не сделает никто другой)
приблизительно так и делал, но не доделал(

C++
1
2
3
4
5
6
7
8
9
 int p=0;
 
            for(i=0; i!=k; i++)
              for(j=0; j!=k; j++) 
                if (prom[i]!=prom[j])
                {
                    answ[p]=prom[j];
                    p++;
                }
Добавлено через 2 часа 27 минут
Бред выводит

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
prom[0]=res[0][0];
           
            for (int x=0; x!=n; x++)
              for (int y=0; y!=n; y++)
              {
                 if (prom[k]!=a[y][x] && prom[k]!=' ')
                 {
                    prom[k+1]=a[y][x];
                    
                    for (int t=0; t!=x; t++)
                        for (int d=0; d!=y; d++)
                            a[d][t]=a[y][x-1];
                    k++;
 
                 }
              
              }
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
16.10.2013, 12:20     Найти уникальные элементы в массиве #6
Надеюсь разберёшься, там всё по отдельным функциям разбито, но без комментов.
вводим х и у - размер массива, далее он заполняется рандомом от 1 до 20, потом вывод его на экран итп, потом переделываем массив b[][] в c[], чтобы проще было реализовать поиск различных символов, потом сам поиск элементов и вывод их, честно говоря я мозг поломал немного))

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <iomanip>
 
using namespace std;
 
void setab(int sizeX,int** b, int sizeY)
{
    for (int x=0;x<sizeY;x++)
    {
    int* a=new int[sizeX];
        for (int y=0;y<sizeX;y++)
        {
        a[y]=1+rand()%20;
        cout<<setw(3)<<a[y]<<"   ";
        }
    b[x]=a;
    cout<<endl;
    }
}
 
void print(int* b[],int sizeY, int sizeX)
{
    for (int x=0;x<sizeY;x++)
    {
    for (int y=0;y<sizeX;y++)
    cout<<setw(3)<<"b["<<y+1<<"]["<<x+1<<"] = "<<setw(3)<<*(b[x]+y)<<"  ";
    cout<<endl;
    }
}
 
void setC(int* b[],int sizeY, int sizeX,int *c,int sizeB)
{
 
int counter=0;
    for (int x=0;x<sizeY;x++)
    {
        for (int y=0;y<sizeX;y++)
        {
        c[counter]=*(b[x]+y);
        cout<<*(b[x]+y)<<"  ";
        counter++;
        }
    }
}
 
void findC(int *c,int sizeB)
{
int temp;
    for (int y=0;y<sizeB;y++)
    {
        for (int x=0;x<sizeB;x++)
        {
                if ((c[y]!=c[x]))
                {
                    temp=c[y];
                    cout<<"temp = "<<temp<<endl;
                    c[y]=c[x];
                    for (int i=y;i<=sizeB;i++)
                        if (c[i]==temp)
                        {
                        c[i]=c[x];
                        }
                }
        }
    }
}
 
int main()
{
srand(time(0));
int sizeX,sizeY;
cout<<"Enter size x:";
cin>>sizeX;
cout<<"Enter size Y:";
cin>>sizeY;
int** b=new int*[sizeY];
int sizeB=sizeX*sizeY;
int *c=new int[sizeB];
 
 
cout<<"function setab:"<<endl;
setab(sizeX,b,sizeY);
 
cout<<"\nfunction print"<<endl;
print(b,sizeY,sizeX);
 
cout<<"function setC"<<endl;
setC(b,sizeY,sizeX,c,sizeB);
 
cout<<"\nfunction findC"<<endl;
findC(c,sizeB);
 
delete []b;
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2013, 20:32     Найти уникальные элементы в массиве
Еще ссылки по теме:

Внести в массив только уникальные элементы C++
Заменить уникальные элементы матрицы нулями C++
В двумерном массиве найти элементы, что введет пользователь и потом эти элементы сплюсовать и вывести C++

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

Или воспользуйтесь поиском по форуму:
Jamguranga
1 / 1 / 0
Регистрация: 08.01.2013
Сообщений: 36
16.10.2013, 20:32  [ТС]     Найти уникальные элементы в массиве #7
спасибо большое, думаю, разберусь
Yandex
Объявления
16.10.2013, 20:32     Найти уникальные элементы в массиве
Ответ Создать тему
Опции темы

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