Форум программистов, компьютерный форум CyberForum.ru

Не правильно работает 1 из счетчиков - C++

Восстановить пароль Регистрация
 
snadow
 Аватар для snadow
0 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 41
04.02.2012, 11:54     Не правильно работает 1 из счетчиков #1
Помогите, не правильно считает счетчик nw, в упор не понимаю по чему...
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 <conio.h>
#include <stdio.h>
 
#define eof -1
#define yes 1
#define no 0
 
int main()
{
    int c;
    int nl;
    int nc;
    int nw;
    int in;
    nc,nl,nw=0;
    in=no;
    printf("Enter your strings and press <Enter>  \n");
    while ((c=getchar()) !=eof)
    {
        if (c !='\n')
        nc++;
        else nl++;
        if (c==' ' || c=='\n' || c=='\t')
            in=no;
        else
        {
            in=yes;
            nw++;
        }
    }
    printf("Strings = %d\n",nl);
    printf("Worlds = %d\n",nw);
    printf("Characters = %d\n",nc);
      _getch();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nxnx
Формучанин
361 / 292 / 16
Регистрация: 02.11.2010
Сообщений: 1,226
04.02.2012, 12:41     Не правильно работает 1 из счетчиков #2
15 строка: возможно имелось в виду
C
1
nc=nl=nw=0;
18 строка: возможно имелось в виду:
C
1
while ((c=getchar()) !=EOF)
(нет необходимости переопределять макрос EOF)

если посли этих исравлений работает не так как нужно, то вопрос: что должна считать программа?
snadow
 Аватар для snadow
0 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 41
04.02.2012, 12:53  [ТС]     Не правильно работает 1 из счетчиков #3
нет, не работает, должна считать строки,символы и слова
nxnx
Формучанин
361 / 292 / 16
Регистрация: 02.11.2010
Сообщений: 1,226
04.02.2012, 16:48     Не правильно работает 1 из счетчиков #4
C
1
2
3
4
5
6
if (c==' ' || c=='\n' || c=='\t')
{ 
     if (in==yes) nw++;
     in=no;
}else
     in=yes;
(исходный текст должен заканчиваться новой строкой, пробелом или символом табуляции)
-=ЮрА=-
04.02.2012, 16:54
  #5

Не по теме:

snadow, как ты собрался выйти из while??? -1 введёшь, каким образом???

nxnx
Формучанин
361 / 292 / 16
Регистрация: 02.11.2010
Сообщений: 1,226
04.02.2012, 17:04     Не правильно работает 1 из счетчиков #6
Например так(линукс): cat 1.txt | ./a.out
( conio.h и _getch() выкинуты из исходника)

Добавлено через 3 минуты

Не по теме:

не думаю что у автора линукс, но думаю он из цикла выходит аналогичным способом (или Ctrl+c)

-=ЮрА=-
Заблокирован
Автор FAQ
04.02.2012, 17:05     Не правильно работает 1 из счетчиков #7
Вот так будет работать - окончание по вводу '\'
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
#include <stdio.h>
#include <ctype.h>
 
int main()
{
    char c;
    int nl;
    int nc;
    int nw;
    int in;
    in = (nc  = (nl = (nw = 0)));
    printf("Enter your strings and press <Enter>\n");
    while ((c = getchar()) != '\\')
    {
        if (c !='\n')
            nc++;
        else 
            nl++;
        if (c==' ' || c=='\n' || c=='\t')
        {
            if(in == 1)
                nw++;
            in = 0;
        }
        else
            in = 1;
    }
    printf("Strings = %d\n",nl);
    printf("Worlds = %d\n",nw);
    printf("Characters = %d\n",nc);
    getchar();
    return 0;
}
Миниатюры
Не правильно работает 1 из счетчиков  
-=ЮрА=-
Заблокирован
Автор FAQ
04.02.2012, 17:06     Не правильно работает 1 из счетчиков #8
Цитата Сообщение от nxnx Посмотреть сообщение
if (c==' ' || c=='\n' || c=='\t')
{
* * *if (in==yes) nw++;
* * *in=no;
}else
* * *in=yes;
- nxnx, я не заметил, ты правильно раньше ответил
nxnx
Формучанин
361 / 292 / 16
Регистрация: 02.11.2010
Сообщений: 1,226
04.02.2012, 17:10     Не правильно работает 1 из счетчиков #9
-=ЮрА=-, getchar() :
If the End Of File is reached or a reading error happens, the function returns EOF and the corresponding error or eof indicator is set.
(EOF определен как -1)
http://www.cplusplus.com/reference/c...stdio/getchar/
C
1
while ((c = getchar()) != '\\' )
- нужно проверять на EOF
snadow
 Аватар для snadow
0 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 41
04.02.2012, 17:13  [ТС]     Не правильно работает 1 из счетчиков #10
crlt + z формирует значение -1, при нажатие выходит

Добавлено через 29 секунд
спасибо вам
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2012, 17:18     Не правильно работает 1 из счетчиков
Еще ссылки по теме:

C++ Не правильно работает if C++
Не правильно работает! C++
C++ Не правильно работает!

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
04.02.2012, 17:18     Не правильно работает 1 из счетчиков #11
Цитата Сообщение от nxnx Посмотреть сообщение
(EOF определен как -1)
- какой EOF в консольном вводе?!
Цитата Сообщение от snadow Посмотреть сообщение
crlt + z формирует значение -1, при нажатие выходит
- ну разве что так
Yandex
Объявления
04.02.2012, 17:18     Не правильно работает 1 из счетчиков
Ответ Создать тему
Опции темы

Текущее время: 13:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru