Функция расчета вероятности буквы в предложении - PullRequest
1 голос
/ 06 мая 2010

У меня есть функция, которая должна рассчитывать количество раз, когда буква встречается в предложении, и на основании этого вычислять вероятность того, что она встречается в предложении. Для этого у меня есть предложение:

Столичная зона Вашингтона является самой образованной и богатой столичной зоной в Соединенных Штатах.

Массив структур, содержащий букву, число ее повторений и вероятность ее возникновения, с одной структурой для каждого буквенного символа и дополнительной структурой для знаков пунктуации и пробелов:

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 Ответ

7 голосов
/ 06 мая 2010

Когда вы делите происходящее на сумму, вы делите int на int, которое усекается (в данном случае до 0).Неважно, что вы присваиваете результат двойному результату.Чтобы это исправить, произнесите удвоение перед делением:

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