Определение уровня читабельности с помощью индекса Коулмана-Ляу с использованием C - PullRequest
0 голосов
/ 23 октября 2019

Я пишу программу, чтобы узнать количество букв, слов и предложений. Используя эти значения, я использую индекс Коулмана-Ляу , чтобы узнать уровень читаемости статьи.

Я думаю, что у меня есть довольно солидная программа с помощью онлайн, но я не знаю почемунекоторые ошибки происходят по ссылке ниже. 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");
    }
}

Насколько я вижу, яне могу понять, почему некоторые результаты искажены.

...