Сначала сортирую массив, чтобы расставить элементы в порядке возрастания. потом пытаюсь посчитать количество повторяющихся элементов, но не выходит.
int min, k = 1;
for (i = 0; i < n; i++)
{
min = mas[0];
for (j = i+1; j < n; j++)
{
if (mas[i]>mas[j])
{
min = mas[j];
mas[j] = mas[i];
mas[i] = min;
}
}
}
for (i = 0; i < n; i++)
{
for (j = i+1; j < n; j++)
{
if (mas[i] != mas[j])
continue;
k++;
}
}
Harry
214k15 золотых знаков117 серебряных знаков228 бронзовых знаков
задан 12 янв 2017 в 1:39
3
Ну, отсортировали вы без проблем, но раз уж массив отсортирован – то просто проходите по нему, сравнивая каждый с предыдущим:
int k = 0;
for (int i = 1; i < n; i++)
{
if (mas[i] == mas[i-1]) ++k;
}
cout << k << endl;
Здесь я не учитываю первые элементы серий, считая их неповторяющимися, т.е. в массиве, скажем
0
0
2
4
4
4
4
5
5
5
считается, что есть 6 повторяющихся элементов (выделены курсивом).
ответ дан 12 янв 2017 в 4:37
HarryHarry
214k15 золотых знаков117 серебряных знаков228 бронзовых знаков
Порой введение дополнительного внутреннего цикла упрощает логику вычисления.:)
Если вам нужно подсчитать общее количество повторяющихся элементов, то программа с использованием вашего подхода может выглядеть следующим образом.
#include <iostream>
int main()
{
int a[] = { 1, 2, 2, 4, 1, 0, 0, 0, 1, 2 };
const size_t N = sizeof(a) / sizeof(*a);
for (int x : a) std::cout << x << ' ';
std::cout << std::endl;
for (size_t i = 0; i < N; i++)
{
for (size_t j = i + 1; j < N; j++)
{
if (a[j] < a[i])
{
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
for (int x : a) std::cout << x << ' ';
std::cout << std::endl;
size_t n = 0;
for (size_t i = 0; i < N; )
{
size_t j = 0;
while (++i < N && a[i] == a[i - 1]) ++j;
if (j != 0) n += j + 1;
}
std::cout << "There are " << n << " repeated elements" << std::endl;
return 0;
}
Вывод программы на консоль:
1 2 2 4 1 0 0 0 1 2
0 0 0 1 1 1 2 2 2 4
There are 9 repeated elements
ответ дан 12 янв 2017 в 9:40
Vlad from MoscowVlad from Moscow
44.6k3 золотых знака37 серебряных знаков89 бронзовых знаков
for (i = 0; i < n; i++)
{
min = mas[0];
for (j = i+1; j < n; j++)
{
if (mas[i]>mas[j])
{
min = mas[j];
mas[j] = mas[i];
mas[i] = min;
}
}
}
int k = 0; // counter
int last = -1;
for(int i=0;i<n-1;i++){
if(mas[i] == mas[i+1]){
if(last == mas[i]){
k++;
}else{
last = mas[i];
k += 2;
}
}
}
ну типа того, сам не тестил, но должно работать, в любом случае идею надеюсь уловили.
ответ дан 12 янв 2017 в 1:55
Считаем количество уникальных:
template <typename InputIt, typename Compare = std::equal_to<>>
auto count_unique(InputIt first, InputIt last, Compare cmp = {}) {
assert(std::is_sorted(first, last));
typename std::iterator_traits<InputIt>::difference_type result = 0;
while (first != last) {
++result;
auto group_first = first;
do {
++first;
} while (first != last && cmp(*group_first, *first));
}
return result;
}
И вычитаем их из общего количества элементов:
size(mas) - count_unique(std::begin(mas), std::end(mas));
ответ дан 29 янв 2019 в 22:07
AbyxAbyx
30.8k13 золотых знаков96 серебряных знаков155 бронзовых знаков
Create a file for example demo.js
and run it in console with node demo.js
and you will get occurrence of elements in the form of matrix.
var multipleDuplicateArr = Array(10).fill(0).map(()=>{return Math.floor(Math.random() * Math.floor(9))});
console.log(multipleDuplicateArr);
var resultArr = Array(Array('KEYS','OCCURRENCE'));
for (var i = 0; i < multipleDuplicateArr.length; i++) {
var flag = true;
for (var j = 0; j < resultArr.length; j++) {
if(resultArr[j][0] == multipleDuplicateArr[i]){
resultArr[j][1] = resultArr[j][1] + 1;
flag = false;
}
}
if(flag){
resultArr.push(Array(multipleDuplicateArr[i],1));
}
}
console.log(resultArr);
You will get result in console as below:
[ 1, 4, 5, 2, 6, 8, 7, 5, 0, 5 ] . // multipleDuplicateArr
[ [ 'KEYS', 'OCCURENCE' ], // resultArr
[ 1, 1 ],
[ 4, 1 ],
[ 5, 3 ],
[ 2, 1 ],
[ 6, 1 ],
[ 8, 1 ],
[ 7, 1 ],
[ 0, 1 ] ]
Как найти количество повторяющихся элементов массива?
Дан массив [ ‘-………’, ‘…..’, ‘-….-‘, ‘…..’ ] необходимо произвести подсчет элементов-дубликатов.
Как реализовать?
-
Вопрос заданболее трёх лет назад
-
10380 просмотров
const count = arr.reduce((acc, n) => (acc[n] = (acc[n] || 0) + 1, acc), {});
const duplicateCount = Object.values(count).filter(n => n > 1).length;
function arrayCountValues (arr) {
var v, freqs = {};
for (var i = arr.length; i--; ) {
v = arr[i];
if (freqs[v]) freqs[v] += 1;
else freqs[v] = 1;
}
return freqs;
}
Пригласить эксперта
const arrayOfDuplicateElements = [ '-.........', '.....', '-....-', '.....' ]
const getNumberOfDuplicateItems = arr => {
const set = new Set()
arr.forEach(el => set.add(el))
const initialArrayLength = arr.length
const uniqueArrayLength = [...set].length
return initialArrayLength - uniqueArrayLength
}
console.log(getNumberOfDuplicateItems(arrayOfDuplicateElements))
or
const arrayOfDuplicateElements = [ '-.........', '.....', '-....-', '.....' ]
const getNumberOfDuplicateItems = arr => arr.length - [...new Set(arr)].length
console.log(getNumberOfDuplicateItems(arrayOfDuplicateElements))
-
Показать ещё
Загружается…
18 мая 2023, в 23:42
1800 руб./за проект
18 мая 2023, в 22:57
500 руб./за проект
18 мая 2023, в 19:39
5000 руб./за проект
Минуточку внимания
Для поиска одинаковых элементов в массиве нагляднее всего воспользоваться циклом:
const nums = [1, 2, 1, 4, 5, 1, 7, 8, 1, 10];
let count = 0;
for (let i = 0; i < nums.length; i +=1 ) {
if (nums[i] === 1) {
count += 1;
}
}
// Вывод: 4
Или например, необходимо посчитать сколько раз встречается каждая цифра в исходном массиве, с помощью reduce:
const nums = [1, 2, 7, 4, 5, 2, 7, 8, 1, 10];
const res = nums.reduce((acc, i) => {
if (acc.hasOwnProperty(i)) {
acc[i] += 1;
} else {
acc[i] = 1;
}
return acc;
},{})
// Вывод: { '1': 2, '2': 2, '4': 1, '5': 1, '7': 2, '8': 1, '10': 1 }
0 / 0 / 0 Регистрация: 15.06.2010 Сообщений: 16 |
|
1 |
|
Найти количество одинаковых элементов массива14.10.2010, 17:21. Показов 62277. Ответов 20
Уважаемые кодеры, прошу вашей помощи. Есть одномерный массив, который уже задан, например int a[7]={1,2,3,2,6,2,7}
0 |
60 / 60 / 17 Регистрация: 12.10.2010 Сообщений: 129 |
|
14.10.2010, 17:24 |
2 |
набольшее количество одинаковых, или количество повторов каждого елемента?
0 |
0 / 0 / 0 Регистрация: 15.06.2010 Сообщений: 16 |
|
14.10.2010, 17:26 [ТС] |
3 |
Количество повторов каждого елемента
0 |
ForEveR В астрале 8048 / 4805 / 655 Регистрация: 24.06.2010 Сообщений: 10,562 |
||||
14.10.2010, 17:29 |
4 |
|||
0 |
0 / 0 / 0 Регистрация: 15.06.2010 Сообщений: 16 |
|
14.10.2010, 17:38 [ТС] |
5 |
Честно говоря, я не сильно понял что Вы написали, полный код программы можете привести?
0 |
ForEveR В астрале 8048 / 4805 / 655 Регистрация: 24.06.2010 Сообщений: 10,562 |
||||
14.10.2010, 17:53 |
6 |
|||
vitaliyden, Не. Не прав. Ща подумаю. Добавлено через 12 минут
1 |
Unforgiven_00 60 / 60 / 17 Регистрация: 12.10.2010 Сообщений: 129 |
||||
14.10.2010, 17:54 |
7 |
|||
что-то вроде этого, только виведет все елементы масива с повторами
1 |
silent_1991 5054 / 3115 / 271 Регистрация: 11.11.2009 Сообщений: 7,045 |
||||
14.10.2010, 18:03 |
8 |
|||
Чувствую, намудрил…
Если в лоб, то можно отсортировать массив и просто увеличивать счётчик, пока не увидим, что число поменялось, выводить полученный счётчик и обнулять его…
2 |
0 / 0 / 0 Регистрация: 15.06.2010 Сообщений: 16 |
|
14.10.2010, 18:10 [ТС] |
9 |
Спасибо ребята, но работает у меня только вариант silent_1991. А в тех не находит модуль <algorithm>
0 |
В астрале 8048 / 4805 / 655 Регистрация: 24.06.2010 Сообщений: 10,562 |
|
14.10.2010, 18:14 |
10 |
vitaliyden, Компилятор?
0 |
0 / 0 / 0 Регистрация: 15.06.2010 Сообщений: 16 |
|
14.10.2010, 18:17 [ТС] |
11 |
bc, на турбо паскаль похож интерфейс.
0 |
В астрале 8048 / 4805 / 655 Регистрация: 24.06.2010 Сообщений: 10,562 |
|
14.10.2010, 18:28 |
12 |
vitaliyden, #include <algorithm.h> Хотя… Наверное BC про STL не знает впринципе.
0 |
easybudda Модератор 11757 / 7257 / 1720 Регистрация: 25.07.2009 Сообщений: 13,266 |
||||
14.10.2010, 19:03 |
13 |
|||
Чувствую, намудрил… Да ну?!
на турбо-с не проверял, но должно бы работать
0 |
5054 / 3115 / 271 Регистрация: 11.11.2009 Сообщений: 7,045 |
|
14.10.2010, 19:10 |
14 |
Ой чувствую, сейчас начнётся
0 |
4ance 2 / 2 / 1 Регистрация: 02.11.2010 Сообщений: 78 |
||||
25.11.2010, 13:45 |
15 |
|||
Можно и так!
0 |
kompozitor12345 4 / 4 / 1 Регистрация: 12.12.2010 Сообщений: 17 |
||||
28.10.2013, 07:15 |
16 |
|||
0 |
BigBuch 0 / 0 / 0 Регистрация: 27.02.2015 Сообщений: 1 |
||||
27.02.2015, 10:26 |
17 |
|||
0 |
0 / 0 / 0 Регистрация: 05.10.2015 Сообщений: 11 |
|
21.10.2015, 17:06 |
18 |
Unforgiven_00,
0 |
Dimension 594 / 462 / 223 Регистрация: 08.04.2014 Сообщений: 1,710 |
|
21.10.2015, 17:10 |
19 |
пожалуйста, выводит элемент ,и сколько раз он встречается в массиве
0 |
Apollo1222 2 / 2 / 2 Регистрация: 10.10.2016 Сообщений: 142 |
||||
19.10.2016, 21:23 |
20 |
|||
easybudda, подскажите почему идентификаторы malloc, free, exit не определены? И можно ли элементы массива вводить с клавиатуры?
0 |