Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 20.01.2017
Сообщений: 10

Подсчёт уникальных чисел в массиве

30.06.2017, 10:01. Показов 1908. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
привет не мог бы ты мне не много помочь, вообщем мне нужно подсчитать кол-во уникальных чисел в массиве от -100 до 100, при вводе отрицательного числа он выводит 10 рандомных числе и считает кол-во уникальных числе, у меня почему-то через раз он выводит отрицательное кол-во уникальных числе, вот прога
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
98
#include <iostream> 
#include <clocale> 
#include <iomanip> 
#include <random> 
 
using namespace std; 
 
int main() { 
int a=0; 
int b=0; 
int c=0; 
 
 
 
setlocale(LC_ALL,"rus"); 
int arr[100]; 
const int N=10; 
 
int mass=0; 
 
 
cout«" ************************************************* "« endl «"\n"; 
cout « " Ввод данных: "« "\n"; 
cin» mass; 
if(mass<1) 
{ 
mass=N; 
srand(time(NULL)); 
 
for(int i=0; i<mass;i++) 
{ 
arr[i]=rand()%10; 
} 
for (int i=0; i<mass;i++) 
{ 
cout « arr[i] « " "; 
 
} 
 
for (int i = 0; i<mass; i++) { 
for (int j = 0; j<mass;j++) { 
if (i != j) { 
 
if (arr[i] == arr[j]) { 
b++; 
} 
} 
} 
} 
 
a = mass - b; 
 
} 
 
else if ( mass > 1 ) { 
 
 
for(int i=0; i<mass;i++) { 
cin » arr[i]; 
} 
 
for (int i = 0; i<mass; i++) { 
for (int j = 0; j<mass;j++) { 
if (i != j && arr[i] == arr[j]) { 
b++; 
} 
} 
} 
 
if (mass-b <= 0) { 
a = 0; 
} 
else a = mass - b; 
 
 
 
} 
cout « endl « "\n"; 
 
 
 
 
 
 
 
cout« setw(5)« " **************** "« setw(5)«endl; 
cout « " |||Результаты||| : " «endl; 
 
cout« setw(5)«" **************** "« setw(5)«endl; 
cout«" Уникальные числа = "« a «endl; 
 
 
 
 
cout « endl; 
system("PAUSE"); 
return 0; 
}

Вообщем мне нужно подсчитать кол-во уникальных числе, при вводе отрицательного числа вы водит 10 рандомных чисел и считает кол-во уникальных, но у меня где то ошибка потому что он через раз выводит отрицательное число чисел и при вводе положительных чисел он почему-то всегда пишет 0
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.06.2017, 10:01
Ответы с готовыми решениями:

Отсортировать массив и подсчитать количество уникальных чисел в массиве
Что не так????????????? #include &lt;clx.h&gt; #pragma hdrstop #include &lt;clx.h&gt; #pragma hdrstop #include&lt;iostream.h&gt; ...

Подсчет уникальных чисел в таблице по заданному условию
Друзья, всем привет. Помогите с решением задачки. Застопорился на одной из формул. В общем есть некая база, в которой необходимо...

Подсчитайте количество уникальных чисел в массиве
помогите пожалуйста с задачей по C#. Подсчитать количество уникальных чисел в массиве, т.е. таких, которые присутствуют в единственном...

4
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
30.06.2017, 10:14
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
#include <iostream>
#include <random>
#include <algorithm>
#include <vector>
#include <chrono>
#include <iterator>
#include <functional>
 
int main()
{
    std::mt19937 gen(std::chrono::system_clock::now().time_since_epoch().count());
    std::uniform_int_distribution<> dist(-100, 100);
    
    size_t n = 0;
    
    std::cin >> n;
    
    std::vector<int> arr(n);
    
    std::generate(arr.begin(), arr.end(), std::bind(dist, gen));
    
    std::copy(arr.begin(), arr.end(), std::ostream_iterator<int>(std::cout , " "));
    std::cout << "\n";
    
    std::sort(arr.begin(), arr.end());
    auto end = std::unique(arr.begin(), arr.end());
    
    std::copy(arr.begin(), end, std::ostream_iterator<int>(std::cout , " "));
    std::cout << "\n";
    std::cout << std::distance(arr.begin(), end) << "\n";
}
0
 Аватар для Геомеханик
838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
30.06.2017, 17:59
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 <cstdlib>
#define MAX  201
 
//кол-во уникальных чисел в массиве от -100 до 100
unsigned unique_count(const int a[], int n){
    int k;
    unsigned char shf[MAX] = {0};
    for(int i = 0; i < n; ++i){
        if(a[i] < 0 && a[i] >= -100){
            k = 100 + abs(a[i]);
            if(shf[k] < 2)
                ++shf[k];
        } else if(a[i] >= 0 && a[i] <= 100){
            if(shf[a[i]] < 2)
                ++shf[a[i]];
        }
    }
 
    unsigned m = 0;
    for(int j = 0; j < MAX; ++j){
        if(shf[j] == 1)
            ++m;
    }
    return m;
}
 
int main(void){
    const int N = 100;
    int arr[N];
    for(int i = 0; i < N; ++i)
        arr[i] = -100 + rand() % 201;
    std::cout << "unique count: " << unique_count(arr, N) << std::endl;
    std::cin.get();
    return 0;
}
1
 Аватар для zarko97
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
30.06.2017, 21:49
GbaLog-,
C++
1
2
std::set<int> elements(std::begin(arr), std::end(arr));
std::cout << "unique count: " << elements.size() << std::endl;
Добавлено через 1 минуту
Цитата Сообщение от GbaLog- Посмотреть сообщение
std::copy(arr.begin(), arr.end(), std::ostream_iterator<int>(std::cout , " "));
есть же rbf или std::move, если стиля придерживаешься

Добавлено через 1 минуту
Цитата Сообщение от zarko97 Посмотреть сообщение
std::set<int> elements(std::begin(arr), std::end(arr));
хотя проще в сет заливать сразу
0
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
30.06.2017, 21:52
zarko97, set то зачем? Размер уже известен, можно и в векторе sort + unique.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.06.2017, 21:52
Помогаю со студенческими работами здесь

Максимальное количество уникальных чисел в массиве
Задан массив list состоящий из элементов - чисел 9 7 8 1 7 4 6 7 7 8 8 8 8 1 1 2 1 7 1 9 Каким способом мне получить максимальное...

Подсчитайте количество уникальных чисел в массиве
Уважаемые программисты помогите решить задачу с массивами! Задача:Подсчитайте количество уникальных чисел в массиве. Заранее спасибо!

Подсчитайте количество уникальных чисел в массиве
Помогите пожалуйста, можете решить задачки, только понятным кодом?) Чтобы сам разобрался) 3)Подсчитайте количество уникальных чисел в...

Подсчет количества уникальных строк и числа строк с каждым из уникальных значений
Здравствуйте, есть таблица с текстовой колонкой. Нужно получить количество строк, в которых значение этой колонки уникально и число строк...

Отсортировать данный массив и подсчитать количество уникальных чисел в массиве
Задание: Отсортировать данный массив и подсчитать количество уникальных чисел в массиве. Внимание! Входные данные и выходные данные...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru