我有一个函数,该函数应该计算字母在句子中出现的次数,并据此计算字母在句子中出现的可能性。为此,我有一句话:



数组结构,包含字母,字母出现的次数和出现的可能性,每个字母字符都有一个结构,标点符号和空格还有一个附加结构:

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作为概率。我究竟做错了什么?

最佳答案

当您将整数除以和时,就是将一个整数除以一个整数,该整数将被截断(在这种情况下为0)。将结果分配给double没关系。要解决此问题,请在除法之前进行两次转换:

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

关于c++ - 函数计算句子中字母的概率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2777241/

10-11 19:05