Я пишу программу для генерации числа букв, слов и предложений при условии ввода текста.
С этими значениями я хочу сгенерировать число (оценивая «уровень читаемости») на основе формулы с числа из букв, слов и предложений в качестве переменных.
Пожалуйста, обратитесь к последнему разделу этого кода (формула оценки).
#include <cs50.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
int main(void)
{
char str[1000];
int i=0, chr=0, st=1, sn=0;
printf("Text: ");
fgets(str, sizeof(str), stdin);
for( i = 0; str[i] != '\0' ; i++)
{
chr = chr + 1;
}
printf("%d letters\n", chr);
for (i = 0; i <= chr - 1; i++)
{
if (str[i] == ' ')
{
st = st + 1;
}
}
printf("%d words\n", st);
for (i = 0; i <= chr - 1; i++)
{
if (str[i] == '.' || str[i] == '!' || str[i] == '?')
{
sn = sn + 1;
}
}
printf("%d sentences\n", sn);
double L = (100.0 * chr / st);
double S = (100.0 * sn / st);
double grade = 0.0588 * L - 0.296 * S - 15.8;
if (grade <= 1)
{
printf("Before Grade 1\n");
}
else if (grade < 16)
{
printf("Grade %f\n", round(grade));
}
else
{
printf("Grade 16+\n");
}
}
Я не знаю, почему формула оценки дает странные результаты.
например,
Пример ввода:
There are more things in Heaven and Earth, Horatio, than are dreamt of in your philosophy.
Пример вывода:
92 letters
17 words
1 sentences
Grade 14
Буквы, слова и предложения не странны- -Они ожидаются. 14 класс странный, потому что я ожидал 9 класс. Я не могу распознать закономерность, просто можно охарактеризовать странность c, поскольку результат оценки всегда больше, чем ожидаемое значение, для значений, ожидаемых выше 1 класса.
to continue,
-Expected Grade 10 shows output Grade 16
-Expected Grade 8 shows output Grade 15
-Expected Grade 7 shows output Grade 14
-Expected Grade 5 shows output Grade 11
-Expected Grade 3 shows output Grade 10
-Expected Grade 2 shows output Grade 9
Ожидаемый до 1 класса текст дает ожидаемый результат.
Формула оценки:
index = 0,0588 * L - 0,296 * S - 15,8
где L - это среднее количество букв на 100 слов в тексте, а S - среднее количество предложений на 100 слов в тексте.
В целом, я не знаю, почему формула оценки не дает ожидаемого результата.