Я пишу программу, чтобы узнать количество букв, слов и предложений. Используя эти значения, я использую индекс Коулмана-Ляу , чтобы узнать уровень читаемости статьи.
Я думаю, что у меня есть довольно солидная программа с помощью онлайн, но я не знаю почемунекоторые ошибки происходят по ссылке ниже. https://submit.cs50.io/check50/35e7ae7e4b968d6b06a8152f61a0e83381b376ab
Для контекста, пожалуйста, смотрите https://cs50.harvard.edu/college/psets/2/readability/
Вот код, с которым у меня возникают проблемы:
#include <stdio.h>
#include <cs50.h>
#include <ctype.h>
#include <string.h>
int letter;
int word;
int sentence;
int main(void)
{
// prompt the user with the question
string article = get_string("What's the article?: ");
// set the length of article
int n = strlen(article);
// add +1 if the article starts with alphanumeric letter
if (isalnum(article[0]))
{
word = 1;
}
// count words
for (int i = 0; i < n; i++)
{
// count letters
if (isalnum(article[i]))
{
letter++;
}
// count words
if (i < n - 1 && isspace(article[i]) && isalnum(article[i + 1]))
{
word++;
}
// count sentences
if (i > 0 && (article[i] == '!' || article[i] == '?' || article[i] == '.') && isalnum(article[i - 1]))
{
sentence++;
}
}
// calculate Coleman-Liau index
int grade = 0.0588 * (100 * letter / word) - 0.296 * (100 * sentence / word) - 15.8;
// debugger
printf("Letters: %i\n Words: %i\n Sentences: %i\n", letter, word, sentence);
// print result
if (grade <= 1)
{
printf("Before Grade 1\n");
}
else if (grade < 16)
{
printf("Grade %i\n", grade);
}
else
{
printf("Grade 16+\n");
}
}
Насколько я вижу, яне могу понять, почему некоторые результаты искажены.