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

Некоторый массив содержит повторяющиеся элементы. Найти количество различных элементов в нём - C++

Восстановить пароль Регистрация
 
Starternh
18 / 1 / 0
Регистрация: 29.05.2013
Сообщений: 60
22.03.2014, 16:47     Некоторый массив содержит повторяющиеся элементы. Найти количество различных элементов в нём #1
Задали задачку: Некоторый массив содержит повторяющиеся элементы. Найти количество различных элементов в нём.
Код:
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
#include<iostream>
#include<conio.h>
 
using namespace std;
 
int main()
{
    int const n(5);
    int A[n], k(0),B[n];
        for(int i(0);i<n;i++)
        {
            cin>>A[i];
            
        }
        cout<<"--------------"<<endl;
        for(int j(0);j<n;j++)
            cin>>B[j];
        for(int i(0);i<n;i++)
        {
            for(int j(0);j<n;j++){
                if(A[i]!=B[j])
                k=k+1;
                
            }
 
        }
        cout<<"k= "<<k;
_getch();
return 0;
}
Знаю, ересь, но пока всё что смог. Думаю проблема в том, что если бы в части с if у B[j] можно как-то было задать диапазон, что бы проверялось сразу все 5 ячеек, то проблема бы решилась.
Вообщем подскажите, пожалуйста, как лучше сделать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2014, 16:47     Некоторый массив содержит повторяющиеся элементы. Найти количество различных элементов в нём
Посмотрите здесь:

Найти количество различных элементов в массиве. C++
Динамический массив. Определить количество различных элементов матрицы C++
C++ Найти количество различных элементов в массиве
Массивы. Найти повторяющиеся элементы и количество повторений каждого из таких элементов C++
найти ошибку(в одномерном массиве найти количество различных элементов) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
n971030
 Аватар для n971030
163 / 95 / 1
Регистрация: 23.01.2010
Сообщений: 1,169
22.03.2014, 17:18     Некоторый массив содержит повторяющиеся элементы. Найти количество различных элементов в нём #2
Такой вариант есть у тебя массив1 в нем свалка, ты создаешь массив2 и в него добавляешь значения. Перед каждым добавлением значения в массив2 ты его проверь уже на существование данного элемента, если есть то не добавляй. и не парься все просто.
Starternh
18 / 1 / 0
Регистрация: 29.05.2013
Сообщений: 60
22.03.2014, 18:21  [ТС]     Некоторый массив содержит повторяющиеся элементы. Найти количество различных элементов в нём #3
А как проверить? Попробовал через иф, но что-то не вышло
n971030
 Аватар для n971030
163 / 95 / 1
Регистрация: 23.01.2010
Сообщений: 1,169
22.03.2014, 18:57     Некоторый массив содержит повторяющиеся элементы. Найти количество различных элементов в нём #4
Цитата Сообщение от Starternh Посмотреть сообщение
? Попробо
Короче давай подробное задание, свое сегодня сделаю и твое напишу язык какой? си или все равно?
Starternh
18 / 1 / 0
Регистрация: 29.05.2013
Сообщений: 60
22.03.2014, 19:10  [ТС]     Некоторый массив содержит повторяющиеся элементы. Найти количество различных элементов в нём #5
Некоторый массив содержит повторяющиеся элементы. Найти количество различных элементов в нём.
Это всё задание.
mcoffka
 Аватар для mcoffka
1 / 1 / 1
Регистрация: 19.03.2014
Сообщений: 10
22.03.2014, 19:24     Некоторый массив содержит повторяющиеся элементы. Найти количество различных элементов в нём #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Starternh Посмотреть сообщение
Некоторый массив содержит повторяющиеся элементы. Найти количество различных элементов в нём.
Если именно количество, то можно брать каждый элемент массива и смотреть есть ли у него копия дальше по массиву, посчитать общее количество копий и отнять от размера массива.

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
#include <iostream>
#include <cstdlib>
using namespace std;
 
int main(int argc, char** argv) {
    int n, copiesCount = 0;
    int *array;
    cout << "Enter the number of elements: " << endl;
    cin >> n;
    array = new int[n];
    
    for (int i = 0; i < n; i++) 
        array[i] = rand() % 10;
        
    for (int i = 0; i < n; i++)
        cout << array[i] << " ";
        
    for (int i = 0; i < n; i++) {
        for (int j = i+1; j < n; j++) {
            if (array[i] == array[j]) {
                copiesCount++; break;
            }
        }
    }
    
    cout << endl << "There are " << n - copiesCount << " different elements in array" ;
    delete [] array;
    return 0;
}
zss
Модератор
Эксперт С++
 Аватар для zss
5953 / 5558 / 1787
Регистрация: 18.12.2011
Сообщений: 14,204
Завершенные тесты: 1
22.03.2014, 19:31     Некоторый массив содержит повторяющиеся элементы. Найти количество различных элементов в нём #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include<iostream>
#include<conio.h>
 
using namespace std;
 
int main()
{
    const int n=5;
    int A[n],B[n];
    for(int i(0);i<n;i++)
    {
        cin>>A[i];
        B[i]=0;
    }
    cout<<"--------------"<<endl;
    k=0;
    for(int i=0;i<n;i++)
    {
            bool nopresent=true;
            for(int j=0;j<k;j++)
            {
                if(A[i]!=B[j])
                {
                     nopresent=false;break;
                }
            }
            if(nopresent)
                  b[k++]=A[i];
    }
    cout<<"k= "<<k;
    _getch();
    return 0;
}
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
22.03.2014, 20:09     Некоторый массив содержит повторяющиеся элементы. Найти количество различных элементов в нём #8
Starternh, просто добавляй элементы в std::unordered_set<> или в std::set<>
Там все элементы по определению уникальны, поэтому избежишь гемора по проверке.
Starternh
18 / 1 / 0
Регистрация: 29.05.2013
Сообщений: 60
22.03.2014, 20:15  [ТС]     Некоторый массив содержит повторяющиеся элементы. Найти количество различных элементов в нём #9
mcoffka, zss, спасибо Теперь буду разбираться в коде. Есть некоторые непонятные пока что вещи.
Цитата Сообщение от gromo Посмотреть сообщение
просто добавляй элементы в std::unordered_set<> или в std::set<>
Там все элементы по определению уникальны, поэтому избежишь гемора по проверке.
К сожаление пока что не знаю, что они значат(
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2014, 02:25     Некоторый массив содержит повторяющиеся элементы. Найти количество различных элементов в нём
Еще ссылки по теме:

C++ Ввести двумерный массив A3×4 . Определить в нём количество тех элементов, которые при делении на 3 дают остаток 2
C++ Дан одномерный массив элементов. Необходимо вывести все не повторяющиеся элементы
Заполнить массив B значениями элементов массива A, исключив из него повторяющиеся элементы C++

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

Или воспользуйтесь поиском по форуму:
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
23.03.2014, 02:25     Некоторый массив содержит повторяющиеся элементы. Найти количество различных элементов в нём #10
Цитата Сообщение от Starternh Посмотреть сообщение
К сожаление пока что не знаю, что они значат(
http://www.cplusplus.com/reference/set/set/
Yandex
Объявления
23.03.2014, 02:25     Некоторый массив содержит повторяющиеся элементы. Найти количество различных элементов в нём
Ответ Создать тему
Опции темы

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