0 / 0 / 1
Регистрация: 03.05.2011
Сообщений: 15
1

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

03.05.2011, 20:27. Показов 1339. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, форумчане.
Поставлена задача: Сосчитать количество строк входного потока, которые содержат только один пробел.

Долго воевал с компилятором, отбил все ошибки и предупреждения. Программа запускается и, вообщем-то, работает не так, как надо(считай не работает).
Вот мой код, назовете быдлокодером - да будет так.
Результатом выполнения такой программы будет nl=1, при любом входном потоке.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 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?


Взгляните свежим глазом, ЧЯДНТ? Спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.05.2011, 20:27
Ответы с готовыми решениями:

Найти количество отрицательных элементов строк, которые содержат хотя бы один нулевой элемент
Задание: Найти количество отрицательных элементов строк, которые содержат хотя бы один нулевой...

Двухмерные массивы:вычислить количество строк, которые содержат хотя бы один положительный элемент
В двухмерном массиве вычислить количество строк, которые содержат хотя бы один положительный...

Подсчитать количество строк матрицы N x N, которые содержат каждое из чисел 1, 2, 3, ... , N ровно один раз
Подсчитать количество строк заданное целочисленной матрицы N x N, которые содержат каждое из чисел...

Дан текстовый файл. Выведите все строки, которые содержат хотя бы один пробел
Дан текстовый файл. Выведите все строки, которые содержат хотя бы один пробел. Формат входных...

4
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
03.05.2011, 22:22 2
Цитата Сообщение от pewstol Посмотреть сообщение
if (ns=1, nl=0)
Жееесть. Этой строчкой ты записываешь в ns единицу, в nl ноль, дальше nl увеличиваешь. Получается единица.
1
0 / 0 / 1
Регистрация: 03.05.2011
Сообщений: 15
04.05.2011, 00:14  [ТС] 3
Хм, внезапно.
if (ns==1 && nl==0)
придумал сделать так.
Теперь регулярный ответ: nl=0
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
04.05.2011, 00:55 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

В твоих силах было упростить код без всяких частных случаев, ибо они частные, а надо сперва общие разрешить, итак вот твой код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 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;
}
Итак, зададимся вопросом: что будет если ввести одну строку с пробелом впереди, например так:
Bash
1
 q
А будет просто.
Коль скоро есть пробел, то ns инкременируется.
После чего тут же, не отходя от кассы опять станет равной нулю. Так, а теперь когда мы перейдём на другую строчку, количество строк с пробелом НЕ УВЕЛИЧИТСЯ, ибо вот

if (ns==1)
nl++;
}

А она- ноль.
Ну вот с этого хотя бы начать...
1
0 / 0 / 1
Регистрация: 03.05.2011
Сообщений: 15
04.05.2011, 11:24  [ТС] 5
Поставил 18 строку в 15, а добавки починил с подачи Somebody.
Ребята, респектую.
0
04.05.2011, 11:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.05.2011, 11:24
Помогаю со студенческими работами здесь

Одним запросом сосчитать количество таких товаров, которые куплены один раз за сегодня
Есть две таблицы - Справочник материалов (kod, name) и Таблица покупок (kod, date, summa). Как...

Скопировать из файла F1 в файл F2 все строки, которые не содержат цифры. Подсчитать количество строк, которые начи
Создать текстовый файл F1 не менее, чем из 10 строк и записать в него информацию Выполнить...

Дан массив строк, найти количество строк, которые содержат свою длину в виде числа
Народ очень прошу. Может кто-нибудь написать алгоритм нахождения кол-во строк ? Я знаю, что нужно...

Определить количество строк массива, которые не содержат чисел из первой строки, вывести номера строк на экран
Определить количество строк массива, которые не содержат чисел из первой строки, вывести номера...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru