Подсчет слов на C, ступор.

Модератор: Модераторы разделов

Аватара пользователя
SilentMan
Сообщения: 228
Статус: %_%
ОС: Arch Linux

Подсчет слов на C, ступор.

Сообщение SilentMan »

пните несчастного, ибо моск мой горит :wacko:
уже и знакомому показывал - он тоже не видит в чем дело.

мое, в данно варинте получаю ноль:

Код: Выделить всё

#include <stdio.h>
#define IN 1
#define OUT 0

main() {
int c, nw, state;
state = IN;
nw = 0;
while ( (c = getchar() ) != EOF ) {

        if (c != ' ' || '\n' || '\t' )
                state = IN;
        else if (state == IN) {
                state = OUT;
                ++nw;
        }
        }
printf("%d\n", nw);
}


пример из книжки, работает нормально:

Код: Выделить всё

#include <stdio.h>

#define IN 1    /* внутри слова */
#define OUT 0    /* вне слова */

/* подсчет строк, слов и символов */
main()
{
    int с, nl, nw, nc, state;
    state = OUT;
    nl = nw = nc = 0;
    while ((с = 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);
}


лольность еще в том, что элементарно копируя пример из книжки вручную, получаю ту же фигню.
Registered Linux user #451481
Спасибо сказали:
Аватара пользователя
Voice
Сообщения: 1073
Статус: столлманист
ОС: Debian GNU/Linux

Re: Подсчет слов на C, ступор.

Сообщение Voice »

(c != ' ' || '\n' || '\t' )

так низя. Вот нормально:
(c != ' ' || c != '\n' || c != '\t' )
"И может собственных Платонов и быстрых разумом Невтонов российская земля рождать."
М. В. Ломоносов
Спасибо сказали:
Аватара пользователя
SilentMan
Сообщения: 228
Статус: %_%
ОС: Arch Linux

Re: Подсчет слов на C, ступор.

Сообщение SilentMan »

Спасибо большое, ступор прошел :)
бывает же...
Registered Linux user #451481
Спасибо сказали: