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

Подсчёт количества выпадений чисел в массиве. - C++

Восстановить пароль Регистрация
 
disker
 Аватар для disker
2 / 2 / 0
Регистрация: 25.01.2012
Сообщений: 78
28.01.2012, 20:19     Подсчёт количества выпадений чисел в массиве. #1
Имеется одноразрядный массив а[n] с набором чисел в нем [1..50]. Порядок чисел в массиве рандомный. То есть приблизительно может быть вот так:

19 4 45 32 48 и т.д.
Как посчитать сколько раз каждое число [1..50] повторяется в массиве.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vandris
 Аватар для Vandris
63 / 63 / 13
Регистрация: 19.01.2011
Сообщений: 90
28.01.2012, 20:51     Подсчёт количества выпадений чисел в массиве. #2
если гарантируется что массив не содержит чисел, кроме [1...50] то можно так:
C++
1
2
3
int counts[51] = {0};
for (int i = 0; i < n; i++)
    counts[a[i]]++;              //тогда в counts будет на i-м месте будет число выпадений i в массиве a
приведу пример с числами поменьше для наглядности
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
#define N 50
 
int main()
{
    srand(static_cast<unsigned>(time(NULL)));
 
    int a[N], counts[11] = {0};
 
    for (int i = 0; i < N; std::cout << (a[i++] = rand()%10 + 1) << " ");
 
    for (int i = 0; i < N; i++)
        counts[a[i]]++;
 
    std::cout << "\n\n";
 
    for (int i = 0; i < 11; i++)
        std::cout << i << " - " << counts[i] << "\n";
 
    return 0;
}
Pavel.fromBy
 Аватар для Pavel.fromBy
13 / 13 / 1
Регистрация: 31.12.2011
Сообщений: 83
28.01.2012, 20:54     Подсчёт количества выпадений чисел в массиве. #3
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
#include <iostream>
#include <time.h>
 
using namespace std;
 
int main()
{
    srand(0);
 
        int arr[10];
    int num[51] = {0};
 
    for (int i = 0; i < 10; i++)
        arr[i] = rand() % 50 + 1;
 
    for (int i = 0; i < 10; i++)
        num[arr[i]]++;
 
    for (int i = 1; i < 51; i++)
        if (num[i] != 0)
            cout << "Число " << i << " повторилось " << num[i] << " раз!";
 
    return 0;
}
p.s. Пардон, опоздал И вывод после иниц. массива забыл
disker
 Аватар для disker
2 / 2 / 0
Регистрация: 25.01.2012
Сообщений: 78
28.01.2012, 21:06  [ТС]     Подсчёт количества выпадений чисел в массиве. #4
Цитата Сообщение от Vandris Посмотреть сообщение
если гарантируется
да, гарантируется. То есть Вы хотите сказать, что мне достаточно этих 3-х строк чтобы вычислить сколько раз встречается каждое число в массиве :
C++
1
2
3
int counts[51] = {0};
for (int i = 0; i < n; i++)
    counts[a[i]]++;
?

и если мне нужно узнать к примеру сколько раз встречалось число 1 в массиве (просто пример), то мне нужно будет вывести на екран : counts[1] ?
Vandris
 Аватар для Vandris
63 / 63 / 13
Регистрация: 19.01.2011
Сообщений: 90
28.01.2012, 21:11     Подсчёт количества выпадений чисел в массиве. #5
Цитата Сообщение от disker Посмотреть сообщение
и если мне нужно узнать к примеру сколько раз встречалось число 1 в массиве (просто пример), то мне нужно будет вывести на екран : counts[1] ?
именно так
disker
 Аватар для disker
2 / 2 / 0
Регистрация: 25.01.2012
Сообщений: 78
28.01.2012, 21:36  [ТС]     Подсчёт количества выпадений чисел в массиве. #6
Отблагодарил обоих мастеров Спасибо

Добавлено через 20 минут
Ещё такой вопрос будет, немного не по теме: а как мне сейчас эти все числа и количество сколько раз они повторялись вывести програмно в сетку DataGridView на форму в два ряда, используя Microsoft Visual Studio 2010 так, чтобы числа [1..50] находились в верхней строке, а количество сколько раз они выпадали под ними в нижней строке?
Pavel.fromBy
28.01.2012, 21:54
  #7

Не по теме:

И srand(time(0)) нужно было написать... Поторопился, однако

disker
 Аватар для disker
2 / 2 / 0
Регистрация: 25.01.2012
Сообщений: 78
28.01.2012, 21:58  [ТС]     Подсчёт количества выпадений чисел в массиве. #8
Цитата Сообщение от Pavel.fromBy Посмотреть сообщение
И srand(time(0)) нужно было написать... Поторопился, однако
а куда его нужно написать ? я просто проверил и у меня правильно считает вариант от Vandris, поэтому и ответил так

P.s. а сетку не надо програмно, я уже решил что так вынесу изначально, вот только пока разбираюсь как значения в ячейки сетки прикрутить Первую строку я так понимаю можно задать при построении таблицы, так как значения будут всегда одни и те же, а вот как посчитанные в сетку во вторую строку добавить пока не знаю
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2012, 22:15     Подсчёт количества выпадений чисел в массиве.
Еще ссылки по теме:

C++ Подсчёт количества символов и замена
C++ Подсчёт количества чисел в строке
Подсчёт количества символов C++

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

Или воспользуйтесь поиском по форуму:
Dekio
Фрилансер
Эксперт C++
 Аватар для Dekio
5816 / 1214 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
28.01.2012, 22:15     Подсчёт количества выпадений чисел в массиве. #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <map>
 
const int n = 10;
 
int main()
{
    int arr[n];
    std::map<int, int> maper;
    for(auto i = 0; i < n; std::cin>>arr[i], ++maper[arr[i++]]);
    for(auto &i: maper)
        std::cout<<"Num = "<<i.first<<" Count = "<<i.second<<std::endl;
    system("pause");
    return 0;
}
Yandex
Объявления
28.01.2012, 22:15     Подсчёт количества выпадений чисел в массиве.
Ответ Создать тему
Опции темы

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