Наибольшее встречающееся число

  • Автор темы pechenka
  • Дата начала
P

pechenka

#1
Есть программа на задание: "В одномерном массиве найти наиболее часто встречающееся число. Если таких чисел несколько, определить наименьшее из них."
В этой же программе можете найти наибольшее часто встречающееся число по аналогии с наименьшим и вывести его на экран вместе с наименьшим же?

[codebox]#include <iostream>
#include <conio.h>
#include <time.h>
using namespace std;

const int n=10;
int main(){

int a[n];
int i,j,mx,mk,k;

srand(time(NULL));
for(i=1;i<=n;i++)
{
a=rand()%n+1;
cout.width(3);
cout<<a;
}
cout<<endl;
mx=a[1]; mk=1; k=0;
for(i=1;i<= n;i++) /*цикл в котором производим необходимые проверки для получения результата*/
{
for(j=1;j<=n;j++)
if(a==a[j]) k++;
if(((mk == k) && (mx > a)) || (mk < k)) /*выбираем меньшее из "одинаковых*/
{
mx=a; mk=k;
}
k=0;
}
cout<<"mx="<<mx<<" count="<<mk<<endl; /*выводим число соответствующее условию, а также количество сколько раз это число встречается в массиве*/

getch();
return 0;
}[/codebox]
 
H

Humanitis

#2
#include <iostream>
#include <conio.h>
#include <time.h>
using namespace std;

const int n=10;
int main(){

int a[n],b[n];
int *p=b;

srand(time(NULL));
for(int i=0;i<n;i++)
{
a=rand()%n+1;
b=0;
cout.width(3);
cout<<a;
}
for(int i=0;i<n;b[a[i++]-1]++);
for(int i=1;i<n;i++)
p=*p<*(p+i)?(p+i): p;

cout<<"\nmx="<<(p-b )+1<<" count="<<*p<<endl; /*выводим число соответствующее условию, а также количество сколько раз это число встречается в массиве*/

getch();
return 0;
}