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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.78
CFYZ
10 / 10 / 0
Регистрация: 21.11.2009
Сообщений: 187
#1

Одномерный массив: сколько раз повторяется каждое число - C++

08.09.2010, 18:15. Просмотров 2655. Ответов 12
Метки нет (Все метки)

помогите решить такую задачку: есть одномерный массив, в котором n элементов, мы вводим в него числа и надо определить сколько раз повторяется каждое число и вывести на экран ответ в виде:
число = количество повторов.
Заранее благодарен)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2010, 18:15     Одномерный массив: сколько раз повторяется каждое число
Посмотрите здесь:
Массив: определить, сколько раз повторяется максимальное число в последоновательности C++
Подчитать, сколько раз повторяется каждое слово во введенных данных C++
Определить, сколько раз в заданном массиве слов повторяется каждое слово C++
C++ Определить, сколько раз число, введенное пользователем, повторяется в массиве
Подсчитать,сколько раз каждое число встречается в файле C++
C++ Определить, сколько раз каждое число используется в массиве
Для каждого из чисел массива выяснить, сколько раз каждое из них входит в этот массив C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
08.09.2010, 21:15     Одномерный массив: сколько раз повторяется каждое число #2
CFYZ, пользуй поиск
CFYZ
10 / 10 / 0
Регистрация: 21.11.2009
Сообщений: 187
08.09.2010, 21:25  [ТС]     Одномерный массив: сколько раз повторяется каждое число #3
Цитата Сообщение от Nameless One Посмотреть сообщение
CFYZ, пользуй поиск
Спасибо КЭП!!
Поис не дал результатов, если есть ссылки кидай!
easybudda
Эксперт С++
9458 / 5471 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
09.09.2010, 00:28     Одномерный массив: сколько раз повторяется каждое число #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от CFYZ Посмотреть сообщение
Поис не дал результатов
Плохо искали, полно таких програмок на форуме...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <iomanip>
#include <map>
 
int main(){
    int size, val;
    std::map<int, int> map;
    
    std::cout << "Number of elements: ";
    std::cin >> size;
    for ( int i = 0; i < size; ++i ){
        std::cout << "ARRAY[" << i << "] = ";
        std::cin >> val;
        map[val]++;
    }
    std::cout << std::endl;
    std::cout << "Value    Count\n--------------" << std::endl;
    for ( std::map<int, int>::const_iterator it = map.begin(); it != map.end(); ++it )
        std::cout << std::setw(5) << it->first << std::setw(9) << it->second << std::endl;
    
    return 0;
}
CFYZ
10 / 10 / 0
Регистрация: 21.11.2009
Сообщений: 187
09.09.2010, 14:47  [ТС]     Одномерный массив: сколько раз повторяется каждое число #5
Мне не понятен этот код((

Вот что я написал:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <iomanip.h>
 
 
int n,x,j,i;
int a[i];
 
void main(){
clrscr();
cout<<"Vvedite kolichestvo cifer  "<<endl;
cin>>x;
cout<<"Vvedite kolichestvo igr  "<<endl;
cin>>j;
n=x*j;
cout<<"Vvedite nomera  "<<endl;
for (i=0; i<n; i++)
cin>>a[i];}
Можите его продолжить?? тут вводитмся массив, а мне нужна часть где определяется сколько раз повторяется КАЖДАЯ цифра, и вывод цифры и количества повторений, и сортировка по убыванию относительно повторений.

Заранее благодарен.
easybudda
Эксперт С++
9458 / 5471 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
09.09.2010, 15:07     Одномерный массив: сколько раз повторяется каждое число #6
Цитата Сообщение от CFYZ Посмотреть сообщение
мне нужна часть где определяется сколько раз повторяется КАЖДАЯ цифра, и вывод цифры и количества повторений
Точно цифры с числами не путаете? На всякий случай напишите, какие данные на входе и на выходе...

Цитата Сообщение от CFYZ Посмотреть сообщение
"Vvedite kolichestvo igr "
Количество чего?
CFYZ
10 / 10 / 0
Регистрация: 21.11.2009
Сообщений: 187
09.09.2010, 15:39  [ТС]     Одномерный массив: сколько раз повторяется каждое число #7
Ввод:
Числа

Вывод:
Число (которое ввели) = Сколько раз оно повторилось в массиве
Число (которое ввели) = Сколько раз оно повторилось в массиве
Число (которое ввели) = Сколько раз оно повторилось в массиве
.............. и т.д.

А та надпись не важна, она нужна для расчета количества элементов массива.
alexzak
84 / 57 / 1
Регистрация: 07.08.2010
Сообщений: 185
10.09.2010, 07:18     Одномерный массив: сколько раз повторяется каждое число #8
Цитата Сообщение от CFYZ Посмотреть сообщение
мне нужна часть где определяется сколько раз повторяется КАЖДАЯ цифра, и вывод цифры и количества повторений, и сортировка по убыванию относительно повторений.
Опиши сначала на русском языке алгоритм того, как ты собираешься искать повторы.
CFYZ
10 / 10 / 0
Регистрация: 21.11.2009
Сообщений: 187
10.09.2010, 09:45  [ТС]     Одномерный массив: сколько раз повторяется каждое число #9
Цитата Сообщение от alexzak Посмотреть сообщение
Опиши сначала на русском языке алгоритм того, как ты собираешься искать повторы.
Возможно так:

Запоминать значение первого эл-та, и сравнивать его со всеми остальными, если найдется такой же элемент, то к счетчику прибавится 1, после того как первый эл-т сравнится со всеми остальными, надо
вывести его значение и количество повторений.

Потом повторить тоже самое со вторым элементом и т.д.
alexzak
84 / 57 / 1
Регистрация: 07.08.2010
Сообщений: 185
10.09.2010, 09:56     Одномерный массив: сколько раз повторяется каждое число #10
Цитата Сообщение от CFYZ Посмотреть сообщение
Возможно так:

Запоминать значение первого эл-та, и сравнивать его со всеми остальными, если найдется такой же элемент, то к счетчику прибавится 1, после того как первый эл-т сравнится со всеми остальными, надо
вывести его значение и количество повторений.

Потом повторить тоже самое со вторым элементом и т.д.
Теперь перевод на С++ тривиален:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const int size = ...;  // размер массива
int a[size];
// .. инициализация массива
 
for (int i = 0; i < size; ++i)  // элемент, для которого ищутся повторы
{
    int count = 0;  // количество повторов
 
    for (int j = 0; j < size; ++j)  // сравниваем со всеми остальными
    {
        if (a[i] == a[j])  ++count;  // увеличиваем счетчик
    }
 
    cout << "элемент a[" << i << "]=" << a[i] << ", повторов=" << count << endl;
}
easybudda
Эксперт С++
9458 / 5471 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
10.09.2010, 10:33     Одномерный массив: сколько раз повторяется каждое число #11
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от CFYZ Посмотреть сообщение
Число (которое ввели) = Сколько раз оно повторилось в массиве
Ну так у меня то же самое, только выводится красивше...

Цитата Сообщение от CFYZ Посмотреть сообщение
Вот что я написал:
Я так не умею... У меня на С вот, что получилось:
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
#include <stdio.h>
#include <stdlib.h>
 
typedef struct COUNT {
    int val;
    int cnt;
} count_t;
 
int cmp_by_count_desc(const void * a, const void * b){
    return (*(count_t*)b).cnt - (*(count_t*)a).cnt;
}
 
#define BUF_LEN 32
 
int main(void){
    count_t * pArr;
    int nCounters, nVal, nPos;
    char buf[BUF_LEN];
    
    pArr = NULL;
    nCounters = 0;
    
    printf("Enter some numbers one by row (empty row - finish):\n");
    while ( fgets(buf, BUF_LEN, stdin) ){
        if ( *buf == '\n' )
            break;
        nVal = atoi(buf);
        for ( nPos = 0; nPos < nCounters; ++nPos ){
            if ( pArr[nPos].val == nVal ){
                pArr[nPos].cnt += 1;
                break;
            }
        }
        if ( nPos == nCounters ){
            if ( ( pArr = (count_t*)realloc(pArr, sizeof(count_t) * (nCounters + 1)) ) == NULL ){
                perror("realloc");
                exit(1);
            }
            pArr[nCounters].val = nVal;
            pArr[nCounters].cnt = 1;
            nCounters += 1;
        }
    }
    if ( ! pArr || ! nCounters ){
        fprintf(stderr, "No one counter created!\n");
        exit(1);
    }
    qsort(pArr, nCounters, sizeof(count_t), cmp_by_count_desc);
    printf("     Value     Count\n--------------------\n");
    for ( nPos = 0; nPos < nCounters; ++nPos )
        printf("     %5d     %5d\n", pArr[nPos].val, pArr[nPos].cnt);
    
    free(pArr);
    exit(0);
}
Цитата Сообщение от CFYZ Посмотреть сообщение
Запоминать значение первого эл-та, и сравнивать его со всеми остальными
С какими остальными, если он первый?! О_о

Добавлено через 13 минут
Цитата Сообщение от easybudda Посмотреть сообщение
С какими остальными, если он первый?!
Гы. Дошло. Ну да, можно и так... Только, так сортировать не получится...
alexzak
84 / 57 / 1
Регистрация: 07.08.2010
Сообщений: 185
10.09.2010, 10:42     Одномерный массив: сколько раз повторяется каждое число #12
Заметь, CFYK, что я ничего не добавил и не убавил от твоего описания. Алгоритм полностью твой. Это описание является одной из важнейших стадий работы над программой. Пока ты не сможешь сказать, что ты хочешь сделать на своем родном языке, ты не сможешь сказать это и на языке программирования.

С сортировкой по убыванию тоже самое. Опиши, как ты это будешь делать. Шаг за шагом. Потом найди, как эти шаги будут записываться на С++.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2010, 15:21     Одномерный массив: сколько раз повторяется каждое число
Еще ссылки по теме:
C++ Сколько раз символ повторяется в строке
Определить, сколько раз в последовательности повторяется ее максимальный элемент C++
C++ Определить, сколько раз повторяется определенный элемент матрицы
C++ Определить, сколько раз в тексте повторяется первое слово
C++ Дан массив целых чисел. Определить все уникальные числа в массиве и сколько раз каждое из них встречается в массиве.

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

Или воспользуйтесь поиском по форуму:
CFYZ
10 / 10 / 0
Регистрация: 21.11.2009
Сообщений: 187
10.09.2010, 15:21  [ТС]     Одномерный массив: сколько раз повторяется каждое число #13
Спасибо, alexzak, это я понял, но честно говоря я не могу пока представить алгоритм сортировки((
разве что запоминать значение каждого счетчика, а потом сравнивать эти значения?
Yandex
Объявления
10.09.2010, 15:21     Одномерный массив: сколько раз повторяется каждое число
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru