Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/68: Рейтинг темы: голосов - 68, средняя оценка - 4.53
10 / 10 / 4
Регистрация: 21.11.2009
Сообщений: 187
1

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

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

Author24 — интернет-сервис помощи студентам
помогите решить такую задачку: есть одномерный массив, в котором n элементов, мы вводим в него числа и надо определить сколько раз повторяется каждое число и вывести на экран ответ в виде:
число = количество повторов.
Заранее благодарен)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.09.2010, 18:15
Ответы с готовыми решениями:

Массив: определить, сколько раз повторяется максимальное число в последоновательности
Нужно определить сколько раз повторяется максимальное число в последоновательности пример!...

Найти и напечатать, сколько раз повторяется в тексте каждое слово
Найти и напечатать, сколько раз повторяется в тексте каждое слово Есть код на Java: public...

Подчитать, сколько раз повторяется каждое слово во введенных данных
Требуется написать программу, которая должна вычислить, сколько раз каждое определенное слово...

Определить, сколько раз в заданном массиве слов повторяется каждое слово
Задан массив слов. Определить, сколько раз в нём повторяется каждое слово.

12
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
08.09.2010, 21:15 2
CFYZ, пользуй поиск
0
10 / 10 / 4
Регистрация: 21.11.2009
Сообщений: 187
08.09.2010, 21:25  [ТС] 3
Цитата Сообщение от Nameless One Посмотреть сообщение
CFYZ, пользуй поиск
Спасибо КЭП!!
Поис не дал результатов, если есть ссылки кидай!
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12460 / 7484 / 1754
Регистрация: 25.07.2009
Сообщений: 13,763
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;
}
1
10 / 10 / 4
Регистрация: 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];}
Можите его продолжить?? тут вводитмся массив, а мне нужна часть где определяется сколько раз повторяется КАЖДАЯ цифра, и вывод цифры и количества повторений, и сортировка по убыванию относительно повторений.

Заранее благодарен.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12460 / 7484 / 1754
Регистрация: 25.07.2009
Сообщений: 13,763
09.09.2010, 15:07 6
Цитата Сообщение от CFYZ Посмотреть сообщение
мне нужна часть где определяется сколько раз повторяется КАЖДАЯ цифра, и вывод цифры и количества повторений
Точно цифры с числами не путаете? На всякий случай напишите, какие данные на входе и на выходе...

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

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

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

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

Потом повторить тоже самое со вторым элементом и т.д.
0
84 / 57 / 8
Регистрация: 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;
}
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12460 / 7484 / 1754
Регистрация: 25.07.2009
Сообщений: 13,763
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 Посмотреть сообщение
С какими остальными, если он первый?!
Гы. Дошло. Ну да, можно и так... Только, так сортировать не получится...
1
84 / 57 / 8
Регистрация: 07.08.2010
Сообщений: 185
10.09.2010, 10:42 12
Заметь, CFYK, что я ничего не добавил и не убавил от твоего описания. Алгоритм полностью твой. Это описание является одной из важнейших стадий работы над программой. Пока ты не сможешь сказать, что ты хочешь сделать на своем родном языке, ты не сможешь сказать это и на языке программирования.

С сортировкой по убыванию тоже самое. Опиши, как ты это будешь делать. Шаг за шагом. Потом найди, как эти шаги будут записываться на С++.
1
10 / 10 / 4
Регистрация: 21.11.2009
Сообщений: 187
10.09.2010, 15:21  [ТС] 13
Спасибо, alexzak, это я понял, но честно говоря я не могу пока представить алгоритм сортировки((
разве что запоминать значение каждого счетчика, а потом сравнивать эти значения?
0
10.09.2010, 15:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.09.2010, 15:21
Помогаю со студенческими работами здесь

Ведите число нужно определить сколько раз повторяется цифра и является ли это число палиндромом
Help. Нужно ввести число нужно определить сколько раз повторяется цифра и является ли это число...

Определить, сколько раз число, введенное пользователем, повторяется в массиве
Как используя массивы создать программу, которая покажет сколько раз число, введенное пользователем...

Определить, сколько раз каждое число используется в массиве
Вот код: #include &lt;iostream&gt; using namespace std; int main() { //двухмерный массив int...

Подсчитать,сколько раз каждое число встречается в файле
Помогите ,кому нетрудно с лабораторной работой. Задание: подсчитать,сколько раз каждое число...

Задан одномерный массив из целых чисел. Найдите сколько раз повторяется в нем чаще число
Задан одномерный массив из целых чисел. Найдите сколько раз повторяется в нем чаще число.

Дан одномерный массив целых чисел, найти сколько раз в нем повторяется самое частое число
Pascal ABC


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru