Подсчет слов, пояснить участок кода - C (СИ)
Формулировка задачи:
Добрый день! Начал учить С по книге Кернигана, Ричи. и вот на пункте "1.5.4. Подсчет слов " немного застопорился:
а конкретно непонятен вот этот участок:
почему выполняя проверку else if (state == OUT) он присваивает state = IN; ?
растолкуйте добрые люди для новичка, спасибо.
#include <stdio.h> #define IN 1 #define OUT 0 main() { int c, nl, nw, nc, state; state = OUT; nl = nw = nc = 0; while ((c = getchar())!=EOF) { ++nc; if(c == '\n') ++nl; if (c == ' ' || c == '\n' || c == '\t') state = OUT; else if (state == OUT) { state = IN; ++nw; } } printf ("%d %d %d \n", nl, nw,nc); }
if (c == ' ' || c == '\n' || c == '\t') state = OUT; else if (state == OUT) { state = IN; ++nw; }
Решение задачи: «Подсчет слов, пояснить участок кода»
textual
Листинг программы
#include <stdio.h> int main(int argc,char** argv) { int TestChr = 0; int CharCnt = 0; int LineCnt = 0; int WordCnt = 0; bool bNewWord = false; while ((TestChr = getchar()) != EOF) { ++CharCnt; if (TestChr == '\n') { ++LineCnt; } if (TestChr == ' ' || TestChr == '\n' || TestChr == '\t') { // Whitespace bNewWord = false; } else if (!bNewWord) { // Not Whitespace bNewWord = true; ++WordCnt; } } printf("Stats: LC = %d, WC = %d, CC = %d\n",LineCnt,WordCnt,CharCnt); return 0; }
Объяснение кода листинга программы
- Объявлены пять переменных: TestChr, CharCnt, LineCnt, WordCnt и bNewWord типа int.
- Переменная TestChr инициализируется значением 0.
- Переменные CharCnt, LineCnt и WordCnt инициализируются значением 0.
- Переменная bNewWord инициализируется значением false.
- Запускается цикл while, который выполняется до тех пор, пока TestChr не станет равным EOF.
- Внутри цикла увеличивается значение CharCnt на 1.
- Если TestChr становится равным '\n', то увеличивается значение LineCnt на 1.
- Если TestChr становится равным ' ' или '\n' или '\t', то значение bNewWord становится равным false.
- Если TestChr не становится равным ' ' или '\n' или '\t' и значение bNewWord равно false, то значение bNewWord становится равным true, а значение WordCnt увеличивается на 1.
- По завершении цикла, выводится сообщение с значениями переменных LineCnt, WordCnt и CharCnt.
- Возвращается значение 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д