Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 09.08.2019
Сообщений: 3
1

Определить, какая десятичная цифра входит в значения массива из натуральных чисел наибольшее количество раз

21.08.2019, 11:34. Показов 631. Ответов 8
Метки нет (Все метки)

Написать функцию для определения, какая цифра входит в значение массива, заполненного натуральными числами, наибольшее количество раз. Вывести на экран сформированный массив, найденную цифру и количество её вхождений.
Раздел изучения "функции и ссылки". Заранее благодарю за помощь
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.08.2019, 11:34
Ответы с готовыми решениями:

Из 3 натуральных чисел выбрать число в котором заданная цифра встречается максимальное количество раз
Помогите написать программу с помощью процедуры. Из 3 натуральных чисел выбрать число в котором...

Определить, какая буква кириллицы встречается в строке наибольшее количество раз
Дана последовательность символов (строка). Определить, какая буква кириллицы встречается в строке...

Строка: посчитать количество цифр в числе и сколько раз в число входит цифра 5.
Дана строка символов, содержащая не более 255 цифр. Необходимо посчитать количество цифр в числе и ...

Определить, сколько раз входит в дробную часть цифра, введенная с клавиатуры
Задано вещественное число. Определить, сколько раз входит в дробную часть этого числа цифра,...

8
1686 / 892 / 364
Регистрация: 11.10.2018
Сообщений: 4,684
21.08.2019, 11:52 2
Создать массив из 10 чисел, которые будут символизировать 10 чисел от 0 до 9 - это будут номер массива. Пройтись по массиву for-ами, считая числа. При обращении к числу, раскладывать его на числа - разряды.

Добавлено через 3 минуты
Цитата Сообщение от MrPossibleto Посмотреть сообщение
Раздел изучения "функции и ссылки".
- Ну так изучайте функции и ссылки, я же не могу Вам данные в мозг записать. В качестве функции можно сделать функцию - разложение числа на числа - разряды.
0
567 / 406 / 132
Регистрация: 22.11.2017
Сообщений: 1,043
21.08.2019, 15:47 3
MrPossibleto, привет!
Кликните здесь для просмотра всего текста

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
#include <iostream>
#include <vector>
#include <string>
#include <map>
#include <algorithm>
 
template<size_t N>
std::pair<char, size_t> max_count_digit(size_t(&arr)[N]);
 
template<size_t N>
std::ostream& operator<<(std::ostream& os, size_t(&arr)[N]);
 
int main()
{
    setlocale(LC_ALL, "Rus");
    
    size_t arr[] = { 15, 50, 2, 20, 41, 10, 10, 10, 5, 115, 5 };
    std::pair<char, size_t> res = max_count_digit(arr);
    std::cout << "Исходный массив\n" << arr
        << "\nСамая частая цифра элементов массива " << res.first
        << " повторяется " << res.second << " раз\n";
 
    return 0;
}
 
template<size_t N>
std::pair<char, size_t> max_count_digit(size_t(&arr)[N])
{
    std::string dump;
    for (auto value : arr)
        dump += std::to_string(value);
    std::map<char, size_t> counts;
    for (auto c : dump)
        ++counts[c];
    std::vector<std::pair<char, size_t>> box(counts.size());
    std::move(std::begin(counts), std::end(counts), std::begin(box));
    auto predicate = [](const std::pair<char, size_t>& p1, const std::pair<char, size_t>& p2)
    {
        return p1.second < p2.second;
    };
    return *std::max_element(std::begin(box), std::end(box), predicate);
}
 
template<size_t N>
std::ostream& operator<<(std::ostream& os, size_t(&arr)[N])
{
    for (auto value : arr)
        os << value << " ";
    return os;
}
0
Миниатюры
Определить, какая десятичная цифра входит в значения массива из натуральных чисел наибольшее количество раз  
6278 / 4262 / 2454
Регистрация: 18.12.2017
Сообщений: 13,294
21.08.2019, 18:37 4
SomniPhobia, Ваш вариант не учитывает возможные повторы, например {1, 1, 2, 2, 33} - код найдёт только цифру 1.

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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
int main()
{
    srand((int)time(0));
    int n, d[10]={0}, max=0;
    cout << "n="; cin >> n;
 
    int*a = new int[n];    
    
    for (int i = 0; i < n; i++)
        {
        a[i]=rand()%1000 + 1;
        cout << a[i] << " ";
        while(a[i])
        {
            d[a[i]%10]++;            
            a[i]/=10;
        }        
      }
    cout << "\n";
    
    for (int i = 0; i < 10; i++)    
        if (d[i]>max) max=d[i];
        
    for (int i = 0; i < 10; i++)    
        if (d[i]==max) cout << i << " (count: " << max << ")\n" ;
        
    delete[]a;
system("pause");
return 0;
}
0
221 / 148 / 79
Регистрация: 14.03.2016
Сообщений: 459
21.08.2019, 18:39 5
Можно что-нибудь более домашнее, так сказать.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
int main() {
    int size = 10, *arr = new int[size], figures[10] = { 0 }, max = 0;
 
    for(int i = 0; i < size; i++) arr[i] = rand();
 
    for(int i = 0, temp = arr[0], figure; i < size; i++, temp = arr[i])
        do if(figures[max] < ++figures[figure = temp % 10]) max = figure;
        while(temp /= 10);
 
    cout << "Array: \n";
    for(int i = 0; i < size; i++) cout << arr[i] << ' ';
 
    cout << "\nThe most popular figure is:";
    for(int i = 0; i < 10; i++) if(figures[i] == figures[max]) cout << ' ' << i;
    cout << ". Counted " << figures[max] << " times.\n";
    
    delete[] arr;
    system("pause>nul");
    return 0;
}
0
6278 / 4262 / 2454
Регистрация: 18.12.2017
Сообщений: 13,294
21.08.2019, 18:59 6
забыл, что функция нужна добавил функцию
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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
void F (int *a, int n)
{
    int d[10]={0}, max=0;
    for (int i = 0; i < n; i++)
        {
        a[i]=rand()%1000 + 1;
        cout << a[i] << " ";
        while(a[i])
        {
            d[a[i]%10]++;            
            a[i]/=10;
        }        
      }
    cout << "\n";
    
    for (int i = 0; i < 10; i++)    
        if (d[i]>max) max=d[i];
        
    for (int i = 0; i < 10; i++)    
        if (d[i]==max) cout << i << " (count: " << max << ")\n" ;
}        
        
int main()
{
    srand((int)time(0));
    int n; 
    cout << "n="; cin >> n;
 
    int*a = new int[n]; 
    
    F(a,n); 
        
    delete[]a;
system("pause");
return 0;
}
0
567 / 406 / 132
Регистрация: 22.11.2017
Сообщений: 1,043
21.08.2019, 19:01 7
Цитата Сообщение от Yetty Посмотреть сообщение
SomniPhobia, Ваш вариант не учитывает возможные повторы, например {1, 1, 2, 2, 33} - код найдёт только цифру 1.
Я знаю.
В задании говорится о цифре в единственном числе и не оговорено, что делать, если максимумов несколько.
Цитата Сообщение от MrPossibleto Посмотреть сообщение
какая цифра
Цитата Сообщение от MrPossibleto Посмотреть сообщение
найденную цифру
А может гарантируется, что только одна цифра будет иметь максимум повторов. Кто знает, в задании не указан этот момент.
0
812 / 500 / 210
Регистрация: 19.01.2019
Сообщений: 1,196
21.08.2019, 19:01 8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <algorithm>
 
int main()
{
    size_t size = 10;
    int* arr = new int[size];
    std::generate(arr, arr + size, []() { return rand() % 1000; });
    size_t* cnt = new size_t[size]{ 0 };
    std::for_each(arr, arr + size, [&cnt](auto&& num) {
        std::cout << num << ' ';
        do {
            ++cnt[num % 10];
            num /= 10;
        } while (num);
    });
    size_t* max = std::max_element(cnt, cnt + size);
    std::cout << "\ndigit: " << max - cnt << "\ncount: " << *max << '\n';
 
    delete[] arr;
    delete[] cnt;
    return 0;
}
0
595 / 448 / 264
Регистрация: 24.02.2017
Сообщений: 1,607
21.08.2019, 20:48 9
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
56
#include <iostream>
#include <ctime>
using namespace std;
 
void f_arr(int *mas,int n){
    srand((int)time(0));
    for (int i = 0; i < n; i++)
        {
        mas[i]=rand()%1000 + 1;
       cout << mas[i] << " ";
        }
}
 
void f_s(string &s,int a){
     while(a>0){
     s+=a%10+'0';
     a/=10;
     }
}
 
void f_max(string s,int k, int &n){
      int c=0;
      for(int j=0;j<s.size();j++)
        if(k==s[j]-'0')c++;
      if(n<c)n=c;
}
 
void f_print(string s,int k, int n){
      int c=0;
      for(int j=0;j<s.size();j++)
        if(k==s[j]-'0')c++;
      if(n==c)cout<<"\n"<<k<<"  "<<n;
}
 
int main()
{
   int *arr,n;
   string s;
 
   cin>>n;
   arr=new int[n];
   f_arr(arr,n);
 
   for (int i = 0; i < n; i++)
   f_s(s,arr[i]);
 
   n=0;
   for (int i = 0; i < 10; i++)
     f_max(s,i,n);
 
   for (int i = 0; i < 10; i++)
     f_print(s,i,n);
 
   system("pause");
   return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.08.2019, 20:48

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Дано целое число n Входит ли цифра 3 в его запись, если входит, то сколько раз
Дано целое число N. Входит ли цифра 3 в его запись, если входит, то сколько раз. Вывести результат....

Дано целое число N .Входит ли цифра 3 в его запись, если входит, то сколько раз
Дано целое число N.Входит ли цифра 3 в его запись если входит , то сколько раз?

Дано натуральное число n . Определить , входит ли указанная цифра в десятичную запись n*n*n (n в кубе) и подсчитать сколько раз.
Дано натуральное число n . Определить , входит ли указанная цифра в десятичную запись n*n*n (n в...

Найти и напечатать все слова строки, в которые заданный символ входит наибольшее количество раз
Задано текст, слова в котором разделены пробелами и разделительными знаками, и символ. Разработать...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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