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

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

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

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

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

помогите решить такую задачку: есть одномерный массив, в котором n элементов, мы вводим в него числа и надо определить сколько раз повторяется каждое число и вывести на экран ответ в виде:
число = количество повторов.
Заранее благодарен)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2010, 18:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Одномерный массив: сколько раз повторяется каждое число (C++):

Массив: определить, сколько раз повторяется максимальное число в последоновательности - C++
Нужно определить сколько раз повторяется максимальное число в последоновательности пример! Входные данные 7 1 4 2 5 2 5 3 ...

Найти и напечатать, сколько раз повторяется в тексте каждое слово - C++
Найти и напечатать, сколько раз повторяется в тексте каждое слово Есть код на Java: public static void main(String args) { ...

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nameless One
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
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
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,602
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
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,602
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
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,602
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, что я ничего не добавил и не убавил от твоего описания. Алгоритм полностью твой. Это описание является одной из важнейших стадий работы над программой. Пока ты не сможешь сказать, что ты хочешь сделать на своем родном языке, ты не сможешь сказать это и на языке программирования.

С сортировкой по убыванию тоже самое. Опиши, как ты это будешь делать. Шаг за шагом. Потом найди, как эти шаги будут записываться на С++.
CFYZ
10 / 10 / 0
Регистрация: 21.11.2009
Сообщений: 187
10.09.2010, 15:21  [ТС] #13
Спасибо, alexzak, это я понял, но честно говоря я не могу пока представить алгоритм сортировки((
разве что запоминать значение каждого счетчика, а потом сравнивать эти значения?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2010, 15:21
Привет! Вот еще темы с ответами:

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

Для каждого из чисел массива выяснить, сколько раз каждое из них входит в этот массив - C++
Задача Дан массив целых чисел. Для каждого из этих чисел выяснить сколько раз каждое число входит в этот массив. Результат представить в...

Сколько раз символ повторяется в строке - C++
здравствуйте. В общем задача такая, написать программу которая бы считала, сколько раз символ повторяется в строке. строку надо вводить с...

Определить, сколько раз в последовательности повторяется ее максимальный элемент - C++
Given a sequence of numbers. Find out how many times the maximum element of the sequence meets in the sequence. Input data. First...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.09.2010, 15:21
Ответ Создать тему
Опции темы

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