Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2014, 17:28   #1
ЮРИЙ2111
Новичок
Джуниор
 
Регистрация: 11.06.2014
Сообщений: 4
По умолчанию Помогите пожалуйста - Не работает программа!

Программа подсчета числа слов.
nc - число символов, nl -число строк, nw - число слов.
Код:
#include <stdio.h>
#define END 12
#define YES 1
#define NO 0
int main()
{
    int ch;
    long nc;
    nc = 0L;
    int nl;
    nl = 0;
    int nw;
    nw = 0;
    int word;
    word = NO;
    while((ch = getchar()) != END)
    {
        nc++;
        if(ch == '\n')
        nl++;
        if ((ch != ' ' && ch != '\n' && ch != '\t') && word == NO)
        {
        word = YES;
        nw++;
    }
    if ((ch == ' ' || ch == '\n' || ch == '\t') && word == YES)
        word = NO;
}
printf(" simvolov = %ld, slov = %d, strok %d\n", nc, nw, nl);
}
Программа компиллируется, создается файл exe, вводятся слова, но не могу завершить процесс ввода слов, слова вводятся бесконечно

Последний раз редактировалось Stilet; 11.06.2014 в 17:42.
ЮРИЙ2111 вне форума Ответить с цитированием
Старый 11.06.2014, 17:43   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
#define END 12
Код:
#define END 13
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.06.2014, 09:38   #3
ЮРИЙ2111
Новичок
Джуниор
 
Регистрация: 11.06.2014
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
#define END 13
Не понял Вас. Я по идее могу задать любую константу, как числовую так и символьную, и вводом этой константы в файле exe завершу цикл

Что не так в строке #define END 12, поясните пожалуйста!

и как мне завершить этот цикл ввода слов?

Последний раз редактировалось Stilet; 12.06.2014 в 11:11.
ЮРИЙ2111 вне форума Ответить с цитированием
Старый 12.06.2014, 10:49   #4
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Цитата:
но не могу завершить процесс ввода слов, слова вводятся бесконечно
А что вы делаете для завершения ввода слов? Я имею в виду, какое действие вы совершаете, по которому компьютер должен догадаться о том, что пора бы уже прекратить ввод слов.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 12.06.2014, 11:12   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Что не так в строке #define END 12, поясните пожалуйста!
Если ты хочешь завершить ввод клавишей Энтер то ее код 13 а не 12.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.06.2014, 11:56   #6
ЮРИЙ2111
Новичок
Джуниор
 
Регистрация: 11.06.2014
Сообщений: 4
По умолчанию

Цитата:
Сообщение от ACE Valery Посмотреть сообщение
А что вы делаете для завершения ввода слов? Я имею в виду, какое действие вы совершаете, по которому компьютер должен догадаться о том, что пора бы уже прекратить ввод слов.
Ввожу константу 12 (константа 12 выбрана произвольно)
ЮРИЙ2111 вне форума Ответить с цитированием
Старый 12.06.2014, 12:43   #7
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Я, конечно, могу ошибаться, но разве getchar не берет всего лишь один символ? Вы вводите 12, прога читает 1. В дебаггере разве не так показывается?
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 12.06.2014, 13:35   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Ввожу константу 12 (константа 12 выбрана произвольно)
Тю.. Не, ты Энтер жмакай. И 13 поставь в дефайне.
Или не морокай башню, и используй scanf().
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.06.2014, 13:55   #9
ЮРИЙ2111
Новичок
Джуниор
 
Регистрация: 11.06.2014
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Тю.. Не, ты Энтер жмакай. И 13 поставь в дефайне.
Или не морокай башню, и используй scanf().
Пробовал 13 - не работает

Последний раз редактировалось Stilet; 12.06.2014 в 13:58.
ЮРИЙ2111 вне форума Ответить с цитированием
Старый 12.06.2014, 13:58   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Значит переходи на scanf() и не парься.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление и поиск в одномерном массиве. Криво работает программа помогите пожалуйста.делфи snord123 Помощь студентам 6 12.05.2014 16:27
Написал решение задачи,но программа не работает,помогите пожалуйста! Никита1 Visual C++ 1 11.02.2014 21:58
Написал решение задачи,но программа неправильно работает,помогите пожалуйста! Никита1 Помощь студентам 2 10.02.2014 23:00
Помогите пожалуйста, программа работает, но почему-то в конце не выводит получившуюся матрицу... Dead Romantic Помощь студентам 6 11.12.2009 19:03