Сосчитать количество строк входного потока, которые содержат только один пробел - C (СИ)
Формулировка задачи:
Здравствуйте.
Поставлена задача: Сосчитать количество строк входного потока, которые содержат только один пробел.
Долго воевал с компилятором, отбил все ошибки и предупреждения. Программа запускается и, вообщем-то, работает не так, как надо(считай не работает).
Вот мой код, назовете быдлокодером - да будет так.
Результатом выполнения такой программы будет nl=1, при любом входном потоке.
так же нарисовал схему
Мне чудится ошибка в строке 9, но что тогда ставить вместо EOF?
Взгляните свежим глазом, ЧЯДНТ? Спасибо.
# 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;
}Решение задачи: «Сосчитать количество строк входного потока, которые содержат только один пробел»
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;
}
Объяснение кода листинга программы
В этом коде:
- Объявлены три переменные: nl (количество строк), ns (количество пробелов), c (текущий символ).
- Входящий поток считывается посимвольно.
- Когда встречается пробел, увеличивается значение переменной ns.
- Когда встречается символ новой строки (\n), проверяется значение переменной ns. Если оно равно 1, то увеличивается значение переменной nl.
- После каждой строки значение переменной ns сбрасывается в 0.
- Выводится значение переменной nl.
- Программа завершается.