我有一个函数,该函数应该计算字母在句子中出现的次数,并据此计算字母在句子中出现的可能性。为此,我有一句话:
数组结构,包含字母,字母出现的次数和出现的可能性,每个字母字符都有一个结构,标点符号和空格还有一个附加结构:
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/