首页 > 电脑

程序目的是找出众数。编译无错,就是运行出错,请问错在何处。

更新时间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; 肯定不对

没细看你的算法,但建议从结构上先调整下

另外,数学上对一组数据的定义中,可能不存在众数的,你没有考虑

 

上一篇:看内容,很急

下一篇:logger里没有addappender方法