Возникли проблемы с функцией слова - PullRequest
0 голосов
/ 28 октября 2019

У меня проблемы с созданием функции, которая регистрирует ввод как слово. В настоящее время он регистрирует слова, но все, что с '(как и не, не может) отображается как 2 слова. Программа должна принимать входные данные из файла, считать слова и отображать количество слов и средние буквы на слово.

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

int main(void) {
  int ch, wordCount, wordAverage, letterCount;
  bool inword = false;
  wordCount = 0;
  letterCount = 0;

  while ((ch = getchar()) != EOF) {
    if (isalpha(ch)) {
      letterCount++;

      if (!isspace(ch) && (!inword)) {
        inword = true;
        wordCount++;
      }
    } else
      inword = false;

  }
  wordAverage = letterCount / wordCount;

  printf("The number of words was %d, and the average letters per word was %d.", wordCount, wordAverage);
}

1 Ответ

2 голосов
/ 28 октября 2019

Вы используете isalpha

while ((ch = getchar()) != EOF) {
    if (isalpha(ch)) {
      letterCount++;

Справочная страница сообщает isalpha эквивалентно isupper ||islower. Попробуйте:

isalpha(ch) || ispunct(ch).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...