找不到模式时如何打印"no mode"?



它可以计算模式,但如果没有任何数字的重复,我希望它能表达"无模式"。我尝试了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;

最新更新