Сосчитать количество строк входного потока, которые содержат только один пробел - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Поставлена задача: Сосчитать количество строк входного потока, которые содержат только один пробел. Долго воевал с компилятором, отбил все ошибки и предупреждения. Программа запускается и, вообщем-то, работает не так, как надо(считай не работает). Вот мой код, назовете быдлокодером - да будет так. Результатом выполнения такой программы будет nl=1, при любом входном потоке.
# include <stdio.h>
# include <conio.h>
int main (void)
{
    int nl,ns,c;
    nl=0;       // counting lines
    ns=0;       // counting spaces
    c=getchar();
    while (c!=EOF) {      //EOf - end of file
        if (c==' ')    // space
        ns++;
        else
        {
        if (c=='\n')  //enter
        {
        if (ns==1)
        nl++;
        }
        }
                ns=0;
        c=getchar();
        }
        if (ns=1, nl=0) //добавка для частного случая
        {
        nl++;
        ns=0;
        }
        if (ns==1)      //добавка для частного случая
        nl++;
 
        printf("nl=%d", nl);
        return 0;

}
так же нарисовал схему Мне чудится ошибка в строке 9, но что тогда ставить вместо EOF? Взгляните свежим глазом, ЧЯДНТ? Спасибо.

Решение задачи: «Сосчитать количество строк входного потока, которые содержат только один пробел»

textual
Листинг программы
# include <stdio.h>
# include <conio.h>
int main (void)
{
        int nl,ns,c;
        nl=0;       // counting lines
        ns=0;       // counting spaces
        c=getchar();
        while (c!=EOF) {      //EOf - end of file
         if (c==' ')    // space
          ns++;
         else {
          if (c=='\n') {
           if (ns==1)
            nl++;
          }
         }
         ns=0;
         c=getchar();
        }
        printf("nl=%d", nl);
        getchar ();
        return 0;
}

Объяснение кода листинга программы

В этом коде:

  1. Объявлены три переменные: nl (количество строк), ns (количество пробелов), c (текущий символ).
  2. Входящий поток считывается посимвольно.
  3. Когда встречается пробел, увеличивается значение переменной ns.
  4. Когда встречается символ новой строки (\n), проверяется значение переменной ns. Если оно равно 1, то увеличивается значение переменной nl.
  5. После каждой строки значение переменной ns сбрасывается в 0.
  6. Выводится значение переменной nl.
  7. Программа завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5
Похожие ответы