更新时间2018-09-19 22:36:20
#include<iostream>
using namespace std;
class NUM{
int a[10],m;
int b[10],n;
public:
NUM(int a1[],int m){
this->m=m;
for(int i=0;i<m;i++){
a[i]=a1[i];
}
n=0;
}
void fun();
void print();
};
void NUM::fun(){
int t[m],b[n],*p,count=0;
p=new int[m];
for(int i=0;i<m;i++){
for(int j=0;j<m;j++)
if(a[i]==a[j]){
++count;
}
t[i]=count;
}
count=0;
for(int i=0;i<m;i++){
for(int j=0;j<m;j++)
if(t[i]>=t[j]) {
*p=i;
++count;
}
}
for(int i=0;i<count;i++){
if(!a[p[i]]==b[i]){
b[i]=a[p[i]];
n++;
}
}
}
void NUM::print(){
cout<<"数组:"<<a<<endl;
cout<<"众数个数:"<<n<<endl;
cout<<"众数:"<<b<<endl;
}
int main(){
int m;
cout<<"请输入数组长度:";
cin>>m;
int a[m];
cout<<"请输入数组:";
for(int i=0;i<m;i++)
cin>>a[i];
NUM num(a,m);
num.fun();
num.print();
}
你对C++数据结构理解还是有问题的
程序设计有很多问题
如
int a[10],m;
若你的m超过10,那么下标明显溢出
而却又用int t[m],b[n],这种又只有C++0x以上才支持的动态数组,p用的是new
也就是一个简单的程序,用了三种数组类型
你的p是数组,那么
*p=i; 肯定不对
没细看你的算法,但建议从结构上先调整下
另外,数学上对一组数据的定义中,可能不存在众数的,你没有考虑
上一篇:看内容,很急