函数计算句子中字母的概率

时间:2010-05-05 22:35:21

标签: c++ probability character letters

我有一个函数可以计算一个字母在一个句子中出现的次数,并根据它来计算它在句子中出现的概率。要做到这一点,我有一句话:

  

华盛顿都市区是美国受教育程度最高,最富裕的大都市区。

一组结构,包含字母,出现的次数及其发生的概率,每个字母字符有一个结构,标点符号和空格有一个额外的结构:

struct letters
{
  char letter;
  int occur;
  double prob;
}box[53];

这是函数本身:

void probability(letters box[53], int sum
{
     cout<<sum<<endl<<endl;
     for(int c8=0;c8<26;c8++)
     {      
       box[c8].prob = (box[c8].occur/sum);
       cout<<box[c8].letter<<endl;
       cout<<box[c8].occur<<endl;
       cout<<box[c8].prob<<endl<<endl;
     }
}

它正确地识别出第一行中句子中有90个字母,根据for循环第二行中的结构打印出大写字母,并打印出它出现的次数。它连续打印0表示概率。我做错了什么?

1 个答案:

答案 0 :(得分:7)

当你除以sum时,你将int除以int,它被截断(在这种情况下为0)。将结果分配给double是没关系的。要解决这个问题,在分割之前,强制转换为双倍:

box[c8].prob = ((double)box[c8].occur)/sum;