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

Цифра, повторяющаяся максимальное количество раз - C++

Восстановить пароль Регистрация
 
Thomas_Mor
 Аватар для Thomas_Mor
0 / 0 / 0
Регистрация: 28.05.2012
Сообщений: 7
01.06.2012, 14:57     Цифра, повторяющаяся максимальное количество раз #1
Добрый день. Вообщем нужна помощь в исправлении программы. На данный момент программа считает количество максимально повторившегося элемента, но проблема в том что только для однозначных чисел. Мне же надо чтобы она считала и для двузначных и даже трехзначных, то есть например,
идет ряд 99 126 69, и программа должна написать что максимально повторов-3, элемент-9. А в моем коде она сравнивает непосредственно сами элементы, а не цифры.
Ну и на последок текст самого задания: В числовую переменную последовательно входят Nцелых чисел. Определить, какие цифры (от 0 до 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
57
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
      int n,c=0,element=0,t=0,i,j,f=0;
      printf("\n\nVvedite massiv (n<20)=");
      scanf("%i", &n);
 
     for(i=0;i<n;i++)
     {
      if(n>20)
    {
       printf("\n\nVvedite massiv (n<20)=");
       scanf("%i", &n);
    }
     else
      {
        int a[n];
        srand(1121);
        for(i=0;i<n;i++)
        a[i]=rand()%10;
        printf("\n\nArray A\n\n");
 
        for(i=0;i<n;i++)
        printf("%i",a[i]);
 
        for(i=0;i<n;i++)
         {
           f=1;
              for(j=0;j<i;j++)
                if(a[i]==a[j])
                 f=0;
             if(f)
            {
              t=1;
               for(j=i+1;j<n;j++)
                 if(a[i]==a[j])
                   t++;
               if(t>c)
                 {
                   c=t;
                   element=a[i];
                 }
             }
          }
   if(c==1)
   printf("\nNet povtorov");
        else
          {
            printf("\n\nKol-vo povtorov = %i\n",c);
            printf("\nElement = %i\n",element);
          }
        }
 
     }
    return 0;
}
Добавлено через 1 час 36 минут
Вообщем сделал так, но расписал каждую цифру массива, сколько она повторяется, а нужно теперь чтобы выводило только ту, что повторяется максимальное кол-во раз.
Помогите дописать, чтобы сравнивались кол-ва повторов каждой цифры и выводилось только максимальное кол-во, и рядом сама цифра(которая повторяется больше всех)

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
int n,i,j,m,k,l,s=0,f=1;
int c,d,sh=0,h,rez,s1=0,s2=0,s3,max;
do{
printf ("Vvedite kolichestvo elementov n<21 ");
scanf("%i",&n);}
while ((n<=0)||(n>20));
int a[n];
 
srand(6726);
for (i=0;i<n;i++)
{
a[i] =rand ()%1000;
}
printf("\n\n ARRAY A: \n\n");
for (i=0;i<n;i++)
{printf ("%5i",a[i]);
}
 
m=n*10;
int v[m];
 
for (i=0;i<n;i++)
{if (a[i]<0)
a[i]=-a[i];
 
d=1;sh=0;
do{
c=a[i]/d;
d=d*10;
sh++;}
while ((c<=0)||(c>9));
d=d/10;
 
for (h=0;h<sh;h++)
{rez=a[i]/d;
a[i]=a[i]%d;
d=d/10;
v[s1]=rez;
s1++;s2++;
}}
 
printf("\n\n Posledovatelnost cifr \n\n");
for (s1=0;s1<s2;s1++)
{
 
printf ("%5i",v[s1]);}//вывод цыфр и начало подсчета их повторов
 
for (i=0;i<s2-1;i++)
{
for (j=i+1;j<s2;j++)
{
if (v[i]<v[j])
{
k=v[i];
v[i]=v[j];
v[j]=k;
}
}
}
printf("\n\n Otsortirovannaia posledovatelnost cifr \n\n");
for (l=0;l<s2;l++)
printf ("%5i",v[l]);
 
s=1;
for (i=0;(i<s2-1);i++)
if (v[i]>v[i+1])
{printf("\n %i",v[i]);
printf(" kolichestvo povtorov %i",s);
s=1;}
else
s++;
printf("\n %i",v[i]);
printf(" kolichestvo povtorov %i",s);
 
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2012, 14:57     Цифра, повторяющаяся максимальное количество раз
Посмотрите здесь:

C++ Массив: Посчитать, сколько раз в массиве встречается цифра 5.
Сколько раз в данном числе встречается цифра 5 ? C++
Верно ли что данная цифра встречается в числе n раз? C++
C++ определить сколько раз встречается максимальная цифра в числе
C++ Минимальный элемент, повторяющийся максимальное количество раз в массиве
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
01.06.2012, 15:05     Цифра, повторяющаяся максимальное количество раз #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
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <conio.h>
using namespace std;
const int n=6;
int Max(int* mas)
{
    int max=mas[0],pos=0;
    for(int i=0;i<10;i++)
    {
        if(mas[i]>max) {max=mas[i];pos=i;}
    }
    return pos;
}
int main()
{
    int mas[n]={354,14,444,7774262,24141,98769};
    int bufmas[10]={0,0,0,0,0,0,0,0,0,0};
    int value=0;
    for(int i=0;i<n;i++)
    {
        while(mas[i]>0)
        {
            value=mas[i]%10;
            switch(value)
            {
            case 0: bufmas[0]++;break;
            case 1: bufmas[1]++;break;
            case 2: bufmas[2]++;break;
            case 3: bufmas[3]++;break;
            case 4: bufmas[4]++;break;
            case 5: bufmas[5]++;break;
            case 6: bufmas[6]++;break;
            case 7: bufmas[7]++;break;
            case 8: bufmas[8]++;break;
            case 9: bufmas[9]++;break;
            default: cout<<"oshibka"<<endl;
            }
            mas[i]/=10;
        }
    }
    cout<<"Otvet: "<<Max(bufmas)<<endl;
    getch();
    return 0;
}
Thomas_Mor
 Аватар для Thomas_Mor
0 / 0 / 0
Регистрация: 28.05.2012
Сообщений: 7
01.06.2012, 15:12  [ТС]     Цифра, повторяющаяся максимальное количество раз #3
Andrey.K, спасибо большое за помощь!
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
01.06.2012, 15:21     Цифра, повторяющаяся максимальное количество раз #4
А зачем тут case вообще?
C++
1
++buxmax[value];
Aesonet
23 / 23 / 1
Регистрация: 04.04.2012
Сообщений: 119
01.06.2012, 15:26     Цифра, повторяющаяся максимальное количество раз #5
У меня вопросик по коду, а есть ли разница особая между
C++
1
2
3
4
 switch(value)
            {
            case 0: bufmas[0]++;break;
//и т.д.
и
C++
1
if (x==0) {bufmas[0]++;break;}
А также, это нормально в коде столько условий ставить?
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
01.06.2012, 15:27     Цифра, повторяющаяся максимальное количество раз #6
Aesonet, разницы нет.
в этой задаче вся конструкция case заменяется одной строкой, см. выше
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
01.06.2012, 15:28     Цифра, повторяющаяся максимальное количество раз #7
Можно сделать немного попроще
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
#include <iostream>
 
 
int main() {
   int digits[ 10 ] = { 0 },
       number,
       N,
       max = 0;
   
   std::cout << "Enter the size of sequence: ";
   std::cin >> N;
   
   for ( int i = 0; i < N; i++ ) {
      std::cout << "Enter " << i + 1 << " number: ";
      std::cin >> number;
      
      digits[ number % 10 ]++;
      
      while ( number /= 10 )
         digits[ number % 10 ]++;
   }
   
   for ( int i = 0; i < 10; i++ )
      if ( digits[ i ] > digits[ max ])
         max = i;
   
   std::cout << "\nMaximum number of digit " << max << ": " << digits[ max ] << " counts." << std::endl;
   
   return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2012, 15:57     Цифра, повторяющаяся максимальное количество раз
Еще ссылки по теме:

Определить, сколько раз цифра К содержится в записи числа N C++
C++ Определить сколько раз встречается каждая цифра в текстовом массиве
Найти число, повторяющееся максимальное количество раз C++

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

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
01.06.2012, 15:57     Цифра, повторяющаяся максимальное количество раз #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
24
25
#include <iostream>
#include <map>
#include <functional>
 
int main() {
    unsigned number, counters[10] = { 0 };
    
    std::cout << "Enter some numbers and other character when finish:" << std::endl;
    
    while ( std::cin >> number ) {
        do {
            counters[number % 10] += 1;
        } while ( number /= 10 );
    }
    
    std::multimap<unsigned, unsigned, std::greater<unsigned> > freq;
    for ( unsigned i = 0; i < 10; ++i )
        freq.insert(std::pair<unsigned, unsigned>(counters[i], i));
    
    std::cout << "Digits by frequency:" << std::endl;
    for ( std::multimap<unsigned, unsigned, std::greater<unsigned> >::const_iterator it = freq.begin(); it != freq.end(); ++it )
        std::cout << it->second << ": " << it->first << std::endl;
    
    return 0;
}
Yandex
Объявления
01.06.2012, 15:57     Цифра, повторяющаяся максимальное количество раз
Ответ Создать тему
Опции темы

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