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

Арифметика. - C++

Восстановить пароль Регистрация
 
Sekt
 Аватар для Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
28.01.2010, 16:40     Арифметика. #1
Для заданного целого числа N определить цифру а, наиболее часто встречающуюся в числе (задача целочисленной арифметики)Как задать кол-во цифр?Через символы?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2010, 16:40     Арифметика.
Посмотрите здесь:

Арифметика C++
Арифметика в C C++
Арифметика C++
Арифметика! C++
C++ Длинная арифметика
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mikhail2704
39 / 39 / 8
Регистрация: 18.11.2009
Сообщений: 115
28.01.2010, 18:31     Арифметика. #2
Можно попробовать считывать по одному символу данного числа, а после сравнить, например

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
n1=0; n2=0;n3=0;n4=0;n5=0;n6=0;n7=0;n8=0;n9=0;n0=0;
if (с == '1')
    n1+=1;
if (c == '2')
    n2+=1;
if (c == '3')
    n3+=1;
if (с == '4')
    n4+=1;
if (c == '5')
    n5+=1;
if (c == '6')
    n6+=1;
if (c == '7')
    n7+=1;
if (с == '8')
    n8+=1;
if (c == '9')
    n9+=1;
if (c == '0')
    n0+=1;
а потом сравнить, чего больше (надо сравнивать n1, n2, n3 ... n0)
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
28.01.2010, 19:07     Арифметика. #3
Я бы сделал так
Код
  int nn[10];
  for (i=0; i<10; i++) nn[i] = 0;
  while (N!=0) {
     i = N%10;
     nn[i]++
     N /= 10;
  }
  // Потом сортируем массив nn (есть функция qsort)
  // и выводим максимальное (ые)
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
28.01.2010, 19:38     Арифметика. #4
Опередил Day, правда сортировать там ничего не нужно, всё проще:
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
#include <stdio.h>
    
/*
    Для заданного целого числа N определить цифру а, наиболее часто встречающуюся в числе 
*/
 
int main(void){
    int n, digits[10] = { 0 }, max_digit, max_count;
    
    printf("Number: ");
    scanf("%d", &n);
    
    while ( n ){
        digits[n % 10]++;
        n /= 10;
    }
    max_digit = 0;
    max_count = digits[0];
    for ( n = 1; n < 10; ++n ){
        if ( digits[n] > max_count ){
            max_digit = n;
            max_count = digits[n];
        }
    }
    printf("Maximum meeting digit is %d\n", max_digit);
    return 0;
}
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
28.01.2010, 20:32     Арифметика. #5
easybudda, И опять ты прав!
Sekt
 Аватар для Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
28.01.2010, 21:33  [ТС]     Арифметика. #6
Спасибо ребята.Меня смушает тока если число типа 3232 то как ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2010, 23:01     Арифметика.
Еще ссылки по теме:

C++ Длинная арифметика
C++ Длинная арифметика
Целочисленная арифметика C++

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

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
28.01.2010, 23:01     Арифметика. #7
Цитата Сообщение от Sekt Посмотреть сообщение
Спасибо ребята.Меня смушает тока если число типа 3232 то как ?
тупой способ:
C
1
2
3
4
5
6
7
...
        printf("Maximum meeting digit(s): ");
        for ( n = 0; n < 10; ++n )
            if ( digits[n] == max_count )
                printf("%d ", n);
        printf("\n");
...
а чтобы совсем комильфо было, можно ещё проверять, есть ли цифры, которые не максимальное количество раз встретились...
Yandex
Объявления
28.01.2010, 23:01     Арифметика.
Ответ Создать тему
Опции темы

Текущее время: 12:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru