它可以计算模式,但如果没有任何数字的重复,我希望它能表达"无模式"。我尝试了diff方法,但是每次都会给我一个数组的1位数字,而不必仅打印不打印模式,这是jus模式计算函数,我必须从txt文件中获取数据并进行排序,然后计算模式
//calculating mode now
int num, count;
double max, mode;
for (int i = 0; i < numScores; i++){
if (num !=*(pscores+i) ){
num = *(pscores+i);
count = 1;
} else {
count++;
}
if (count > max){
max = count;
mode = num;
}
}
cout<<"Mode : "<<mode<<endl;
您永远不会初始化mode
,除非count > max
。您的如果条件也永远不会起作用,因为您也不初始化max
。假设您对"无模式"的病情是count <= max
时,只需在该模式周围放置其他模式,并相应地设置模式和最大值。
//calculating mode now
int num = -1, count = 0;
double max = /* whatever */, mode = 0.0;
for (int i = 0; i < numScores; i++)
{
if (num !=*(pscores+i))
{
num = *(pscores+i);
count = 1;
}
else
count++;
if (count > max)
{
max = count;
mode = num;
/* maybe you want to break here? */
}
}
if (mode == 0.0) /* this is dangerous (mode might be 0.00000001 != 0.0) */
cout << "Mode: " << mode << endl;
else
cout << "Mode: no mode" << endl;