Mik*_*ike 1 c++ character probability letters
我有一个函数应该计算一个字母在一个句子中出现的次数,并根据它,计算它在句子中发生的概率.要做到这一点,我有一句话:
华盛顿都市区是美国受教育程度最高,最富裕的大都市区.
一组结构,包含字母,它出现的次数,以及它发生的概率,每个字母字符有一个结构,标点符号和空格有一个附加结构:
struct letters
{
char letter;
int occur;
double prob;
}box[53];
Run Code Online (Sandbox Code Playgroud)
这是函数本身:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
它正确地识别出第一行中句子中有90个字母,根据for循环第二行中的结构打印出大写字母,并打印出它出现的次数.它连续打印0表示概率.我究竟做错了什么?
当你除以sum时,你将int除以一个int,它被截断(在这种情况下为0).将结果分配给double是没关系的.为了解决这个问题,在分割之前,强制转换为双倍:
box[c8].prob = ((double)box[c8].occur)/sum;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
535 次 |
| 最近记录: |