2014-01-21 20 views
0

它计算模式,但我希望它关闭“无模式”,如果没有任何重复的任何数字。我试过diff方法,但每次都给我的数组的1位数,而没有假设只打印没有模式这是模式计算函数,我必须从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; 
+0

请格式化你的问题,因此是可读 –

+0

'如果(模式== 0){/ *做一些兄弟* /}' –

+0

如果(模式== 0){ COUT <<“无模式“<< ENDL; } else { cout <<“Mode:”<< mode << endl; } 我这样做和我得到这个再次ANS成绩:1 2 3 4 5 6 78 8 43 程度排序:1 2 3 4 5 6 8 43 78 平均5 模式:1个 程序,退出代码结束:0但我期待“无模式” – user3217663

回答

1

除了count > max以外,您永远不会初始化mode。你的条件将永远不会工作,因为你也不初始化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;