#include <stdio.h>
#include <cs50.h>
#include <ctype.h>
#include <string.h>
#include <math.h>
int main(void)
{
string text = get_string("Text: ");
float letters = 0;
float words = 0;
float sentences = 0;
for (int i = 0, n = strlen(&text[i]); i < n; i++)
{
if (isalpha(text[i]))
{
letters++;
}
}
printf("%.1f letter(s)\n", letters);
for (int i = 0, n = strlen(&text[i]); i < n; i++)
{
if (isspace(text[i]))
{
words++;
}
}
printf("%.1f word(s)\n", words + 1);
for (int i = 0, n = strlen(&text[i]); i < n; i++)
{
if (text[i] == '!' || text[i] == '.' || text[i] == '?')
{
sentences++;
}
}
printf("%.1f sentence(s)\n", sentences);
float L = (100.00 * letters) / words;
float S = (100.00 * sentences) / words;
float index = 0.0588 * L - 0.296 * S - 15.8;
int grade = round(index);
printf("Average letters per 100 words: %.1f\n", L);
printf("Average sentences per 100 words: %.1f\n", S);
printf("Grade %i\n", grade);
}
This is what I'm getting when using the following text
Text: In my younger and more vulnerable years my father gave me some advice that I've been turning over in my mind ever since.
96.0 letter(s)
23.0 word(s)
1.0 sentence(s)
Average letters per 100 words: 436.4
Average sentences per 100 words: 4.5
Grade 9
But it's suppose to give me Grade 7, and something around 417 letters per 100 words 4.3 sentences per 100 words
So I assume the grade issue results in an error in calculating the averages, but I can't figure out what.
I've also tried
float L = (letters / words) * 100;
float S = (sentences/ words) * 100;
but no luck either.