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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Jenot
0 / 0 / 0
Регистрация: 17.04.2012
Сообщений: 21
#1

Найти цифры, которые чаще всего встречаются в заданном натуральном числе N. - C++

17.04.2012, 18:32. Просмотров 1906. Ответов 11
Метки нет (Все метки)

Помогите пожалуйста написать программу. Нужно чтобы при вводе числа с несколькими наибольшими цифрами, выводило все эти цифры, а не только одну из них((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2012, 18:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти цифры, которые чаще всего встречаются в заданном натуральном числе N. (C++):

Найти цифры, которые чаще всего встречаются в заданном натуральном числе N - C++
Добрый день! Долго сижу над задачей, никак не допру, подскажите пожалуйста как реализовать данную задачу. "Найти цифры, которые чаще всего...

Проверить, что в натуральном числе встречаются цифры А и В. - C++
Помогите пожалуйста решить задачу, буду весьма признателен. Проверить, что в натуральном числе встречаются цифры А и В.

Определить, есть ли в заданном натуральном числе указанные цифры - C++
В школе задали, кто знает как решить ? Спасибо. Дано натуральное число. Определить, есть ли в нем цифры а и b.

Найти количество цифр в заданном натуральном числе - C++
найти сколько цифр в данном натуральном числе n(n<=100) c++ Очень надо.

Подсчитать количество цифр в заданном натуральном числе. - C++
Подсчитать количество цифр в заданном натуральном числе. (как можно понятнее и проще, если можно)

Вычислить количество цифр в заданном натуральном числе - C++
Вычисление количества цифр в заданном натуральном числе. Максимально вычисляет 10, что мне делать? #include <iostream> using...

11
НубаС++
1 / 1 / 1
Регистрация: 25.02.2012
Сообщений: 115
17.04.2012, 18:39 #2
Можно поточнее задачу узнать?
0
Jenot
0 / 0 / 0
Регистрация: 17.04.2012
Сообщений: 21
17.04.2012, 20:45  [ТС] #3
Нужна программа чтобы выводило цифры наиболее чаще встречающиеся в заданном числе.
Допустим в числе 123125 он должен вывести и 1 и 2)

Добавлено через 1 час 56 минут
НубаС++, Нужна программа чтобы выводило цифры наиболее чаще встречающиеся в заданном числе
0
Сапожок
5 / 5 / 0
Регистрация: 17.04.2012
Сообщений: 34
17.04.2012, 22:35 #4
Jenot, Какие функции вы используете для обработки числа?
0
Jenot
0 / 0 / 0
Регистрация: 17.04.2012
Сообщений: 21
17.04.2012, 22:41  [ТС] #5
Сапожок,
- У меня получился вот такой код, только он вычисляет сколько раз встречается каждая цифра
C++ (Qt)
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
#include "stdafx.h"
#include "iostream"
#include <math.h>
#include <conio.h>
 
using namespace std;
void main()
{setlocale(LC_CTYPE, "rus");
    unsigned long int n;
short j=0,i,k;
short c[10],a[10];
int c[j]=0;int m=0;
cout<<"n="; cin>>n;
k=0;
do {a[k]=n%10;
n/=10;
k++;}
while (n!=0);
for (j=0; j<10; j++)
c[j]=0;
for (i=0;i<k;i++)
{j=a[i];
c[j]++;
if (c[j]>m) m=c[j];
cout<<"цифра числа"<<j<<"->"<<c[j]<<endl;}
getch();
}
А еще я нашла вот такой код, он чуть не понятен, но не совсем точно работает
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <conio.h>
using namespace std;
void main()
{
int array[10],i;
for(i=0;i<10;i++) array[i]=0;//счетчики встречаемости цифр
 int number=0;
cin>>number;
while(number)
{
   array[number%10] +=1;
   number = (number-number%10)/10;
}
int index=0;
for(int i=0;i<10;i++) index=(array[i]>array[index])?i:index;
cout<<"\n result = "<<index<<endl; 
return 1;
getch();
}
Буду очень признательна, если кто нить сможет добить эту программу
0
Сапожок
5 / 5 / 0
Регистрация: 17.04.2012
Сообщений: 34
17.04.2012, 23:22 #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
#include <iostream>
#include <string>
using namespace std;
 
main(){
       int n;
       int k=0;
       int a[100] = {};
       cin >> n;
       do {a[k]=n%10;
       n/=10;
       k++;}
       while (n!=0);
       
       int ex[10] = {0,0,0,0,0,0,0,0,0,0};
       for (int i = 0; i <= k; i++){
           if (a[i] == 0) ex[0]++;
           if (a[i] == 1) ex[1]++;
           if (a[i] == 2) ex[2]++;
           if (a[i] == 3) ex[3]++;
           if (a[i] == 4) ex[4]++;
           if (a[i] == 5) ex[5]++;
           if (a[i] == 6) ex[6]++;
           if (a[i] == 7) ex[7]++;
           if (a[i] == 8) ex[8]++;
           if (a[i] == 9) ex[9]++;
           }
       ex[0]--;   
       for (int i = 0; i < 10; i++){
           cout << "число " << i << " встречается " << ex[i] << " раз.\n";
           }
       cin >> n;
       return 0;
       }
Я не знаю, почему надо вычитать из ех0 единицу, но это, видимо, для чего-то надо, потому что только так программа работает правильно (не знаю, правильно ли). Думаю, что правильно.

Добавлено через 1 минуту
Кстати, отличная экономия памяти с помощью всяких short'ов. Откуда это?
И еще. Используйте табуляцию.

Добавлено через 2 минуты
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
#include <iostream>
#include <string>
using namespace std;
 
main(){
       int n;
       int k=0;
       int a[100];
       cin >> n;
       do {a[k]=n%10;
       n/=10;
       k++;}
       while (n!=0);
       
       int ex[10] = {0,0,0,0,0,0,0,0,0,0};
       for (int i = 0; i <= k; i++){
           if (a[i] == 0) ex[0]++;
           if (a[i] == 1) ex[1]++;
           if (a[i] == 2) ex[2]++;
           if (a[i] == 3) ex[3]++;
           if (a[i] == 4) ex[4]++;
           if (a[i] == 5) ex[5]++;
           if (a[i] == 6) ex[6]++;
           if (a[i] == 7) ex[7]++;
           if (a[i] == 8) ex[8]++;
           if (a[i] == 9) ex[9]++;
           } 
       for (int i = 0; i < 10; i++){
           cout << "×èñëî " << i << " âñòðå÷Г*ГҐГІГ±Гї " << ex[i] << " Г°Г*Г§.\n";
           }
       cin >> n;
       return 0;
       }
Понял, в чем дело. Я просто вначале массив обнулил зачем-то. Теперь все хорошо.
0
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
18.04.2012, 07:17 #7


Цитата Сообщение от Сапожок Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
if (a[i] == 0) ex[0]++;
if (a[i] == 1) ex[1]++;
if (a[i] == 2) ex[2]++;
if (a[i] == 3) ex[3]++;
if (a[i] == 4) ex[4]++;
if (a[i] == 5) ex[5]++;
if (a[i] == 6) ex[6]++;
if (a[i] == 7) ex[7]++;
if (a[i] == 8) ex[8]++;
if (a[i] == 9) ex[9]++;
C++
1
++ex[ a[i] ];
Цитата Сообщение от Сапожок Посмотреть сообщение
C++
1
int ex[10] = {0,0,0,0,0,0,0,0,0,0};
C++
1
int ex[10] = {0};
0
Сапожок
5 / 5 / 0
Регистрация: 17.04.2012
Сообщений: 34
18.04.2012, 14:15 #8
diagon, Я знаю про второй случай. Просто редко его использую, побоялся экспериментировать. Там еще можно доработать с помощью оператора break;.
А первый случай я не понял. Как это так?

Добавлено через 57 секунд
А почему вам не нравится мой метод дровосека? По-моему, очень красиво смотрится. =)
0
Jenot
0 / 0 / 0
Регистрация: 17.04.2012
Сообщений: 21
18.04.2012, 20:19  [ТС] #9
Сапожок, все бы не плохо, только не надо чтобы все цифры выводило. Надо чтобы выводило Только часто Встречающиеся.
0
Сапожок
5 / 5 / 0
Регистрация: 17.04.2012
Сообщений: 34
18.04.2012, 21:04 #10
Насколько часто?
0
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
18.04.2012, 21:11 #11
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
#include <iostream>
#include <cstdlib>
#include <cstddef>
 
int main()
{
    //------------
    int value;
    std::cout << "value: ";
    std::cin >> value;
 
    if(!std::cin) return 1;
    value = std::abs(value);
 
    //------------
    const std::size_t n = 10;
    int digits[n] = {0};
 
    do
    {
        ++digits[value % 10];
        value /= 10;
    }
    while(value != 0);
 
    //------------
    int imax = 0;
    for(std::size_t i = 1; i < n; ++i)
        if(digits[i] > digits[imax])
            imax = i;
 
    std::cout << imax;
    for(std::size_t i = imax + 1; i < n; ++i)
        if(digits[i] == digits[imax])
            std::cout << ", " << i ;
}
1
Jenot
0 / 0 / 0
Регистрация: 17.04.2012
Сообщений: 21
18.04.2012, 21:47  [ТС] #12
Сапожок,
Пример, допусти вводим число 134684531
Должно вывести 1,3,4

Так ясно?

Добавлено через 7 минут
rangerx, Вы гениальны! Я в восторге!!!!!!!!!!!! Огромнейшеее спасибо!!!!!!!!!!!

Добавлено через 9 минут
rangerx, только мне непонятен фрагмент кода
for(size_t i = 1; i < n; ++i)
объясните плиз.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2012, 21:47
Привет! Вот еще темы с ответами:

Рекурсия: подсчитать количество цифр в заданном натуральном числе - C++
Доброго времени суток. Задание было такое: Тема - Рекурсивные функции пользователя. Подсчитать количество цифр в заданном натуральном...

Рекурсивно вычислить количество цифр в заданном натуральном числе - C++
Разработать рекурсивную функцию, возвращающую значение для вычисления количества цифр в заданном натуральном числе. Обращаюсь в...

Определить какие из гласных букв встречаются в тексте чаще всего - C++
Нужна помощь в написании программы. Есть файл с текстом,нужно Определить какие из символов &quot;а&quot;, &quot;о&quot;, &quot;у&quot;, &quot;ю&quot;, &quot;я&quot;, &quot;е&quot; встречаются чаще...

Напишите функцию, которая вычисляет сумму цифр в заданном натуральном числе - C++
Напишите функцию, которая вычисляет сумму цифр в заданном натуральном числе. Заголовок функции должен быть следующим: int sumOfDigit(int...


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

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

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