Программа использует индекс Coleman-Liau. Он предназначен для вывода того, какой (американский) класс необходим для понимания текста. Формула имеет вид:
index = 0,0588 * L - 0,296 * S - 15,8
Когда я ввожу простой текст, такой как hello there
, я получаю высокий уровень оценки, но если я ввожу более сложный текст я получаю более низкий уровень оценки.
#include <stdio.h>
#include <cs50.h>
#include <string.h>
#include <math.h>
float letter = 0;
float word = 1;
float sentence = 0;
int main(void)
{
string text = get_string("Text: ");
for (int i = 0; i < strlen(text); i++)
{
if ((text[i] >= 'a' && text[i] <= 'z') || (text[i] >= 'A' && text[i] <= 'Z'))
{
letter++;
}
else if (text[i] == ' ')
{
word++;
}
else if (text[i] == '.' || text[i] == '!' || text[i] == '?')
{
sentence++;
}
}
printf("Letter:%f, Word:%f, Sentence:%f\n", letter, word, sentence);
float L = letter/word * 100;
float S = sentence/word * 100;
float x = (0.0588 * L) - (0.296 * S) - 15.8;
if (x < 16 && x >= 0)
{
printf("Grade Level: %i",(int) round(x));
}
else if (x > 16)
{
printf("Grade Level: 16+");
}
else
{
printf("Before Grade 1");
}