CyberForum.ru - Форум программистов и сисадминов
Вернуться   Форум программистов и сисадминов CyberForum.ru > Форум программистов > Форум C++ > Форум С++ для начинающих

Ответ Создать новую тему
 
Старый 04.02.2012, 10:54   #1
snadow
Новичок
 
Регистрация: 03.07.2011
Адрес: Москва
Сообщений: 27
Репутация: 0 (0)
По умолчанию Не правильно работает 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
36
#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();
}
 
snadow вне форума
Другие темы раздела
Битовые операции C++
Ребят, нужен алгоритм, а желательно и код для реализации следующей функции: Есть скажем числа от 0 до 7, т.е. 8 (2^3) Теперь взглянем на их представления в разрядной сетке (в дальнейшем будем рассматривать только младшие 3 бита, ибо это есть степень 2 и остальные разряды у этих чисел будут.... Битовые операции
Функция getline не считывает пробелы C++
Написал код программы для вывода из файла строк, где есть двузначные цифры. Пользовался функцией getline. Но указанные в процессе работы программы строки выводятся "слипшиеся" - без пробелов. Вот код программы: #include "stdafx.h" #include "iostream" #include "fstream" //#include "stdio.h".... Функция getline не считывает пробелы
Старый 04.02.2012, 11:41   #2
nxnx
Форумчанин
 
Аватар для nxnx
 
Регистрация: 02.11.2010
Адрес: Москва
Сообщений: 949
Репутация: 265 (219)
По умолчанию Re: Не правильно работает 1 из счетчиков

15 строка: возможно имелось в виду
Код C
1
nc=nl=nw=0;
18 строка: возможно имелось в виду:
Код C
1
while ((c=getchar()) !=EOF)
(нет необходимости переопределять макрос EOF)

если посли этих исравлений работает не так как нужно, то вопрос: что должна считать программа?
nxnx вне форума
Старый 04.02.2012, 11:53  [ТС]   #3
snadow
Новичок
 
Регистрация: 03.07.2011
Адрес: Москва
Сообщений: 27
Репутация: 0 (0)
По умолчанию Re: Не правильно работает 1 из счетчиков

нет, не работает, должна считать строки,символы и слова
snadow вне форума
Старый 04.02.2012, 15:48   #4
nxnx
Форумчанин
 
Аватар для nxnx
 
Регистрация: 02.11.2010
Адрес: Москва
Сообщений: 949
Репутация: 265 (219)
По умолчанию Re: Не правильно работает 1 из счетчиков

Код C
1
2
3
4
5
6
if (c==' ' || c=='\n' || c=='\t')
{ 
     if (in==yes) nw++;
     in=no;
}else
     in=yes;
(исходный текст должен заканчиваться новой строкой, пробелом или символом табуляции)
nxnx вне форума
Старый 04.02.2012, 15:54   #5
-=ЮрА=-
С/С++ advanced
Автор FAQ
 
Аватар для -=ЮрА=-
 
Регистрация: 08.08.2009
Адрес: Украина, Донецк
Сообщений: 5,584
Записей в блоге: 11
Репутация: 3312 (2135)
По умолчанию Re: Не правильно работает 1 из счетчиков


Не по теме:
snadow, как ты собрался выйти из while??? -1 введёшь, каким образом???
-=ЮрА=- на форуме
Старый 04.02.2012, 16:04   #6
nxnx
Форумчанин
 
Аватар для nxnx
 
Регистрация: 02.11.2010
Адрес: Москва
Сообщений: 949
Репутация: 265 (219)
По умолчанию Re: Не правильно работает 1 из счетчиков

Например так(линукс): cat 1.txt | ./a.out
( conio.h и _getch() выкинуты из исходника)

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

Не по теме:
не думаю что у автора линукс, но думаю он из цикла выходит аналогичным способом (или Ctrl+c)
nxnx вне форума
Старый 04.02.2012, 16:05   #7
-=ЮрА=-
С/С++ advanced
Автор FAQ
 
Аватар для -=ЮрА=-
 
Регистрация: 08.08.2009
Адрес: Украина, Донецк
Сообщений: 5,584
Записей в блоге: 11
Репутация: 3312 (2135)
По умолчанию Re: Не правильно работает 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 <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;
}
 
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.JPG
Просмотров: 5
Размер:	20.5 Кб
ID:	125107  
-=ЮрА=- на форуме
Старый 04.02.2012, 16:06   #8
-=ЮрА=-
С/С++ advanced
Автор FAQ
 
Аватар для -=ЮрА=-
 
Регистрация: 08.08.2009
Адрес: Украина, Донецк
Сообщений: 5,584
Записей в блоге: 11
Репутация: 3312 (2135)
По умолчанию Re: Не правильно работает 1 из счетчиков

Цитата Сообщение от nxnx Посмотреть сообщение
if (c==' ' || c=='\n' || c=='\t')
{
* * *if (in==yes) nw++;
* * *in=no;
}else
* * *in=yes;
- nxnx, я не заметил, ты правильно раньше ответил
-=ЮрА=- на форуме
Старый 04.02.2012, 16:10   #9
nxnx
Форумчанин
 
Аватар для nxnx
 
Регистрация: 02.11.2010
Адрес: Москва
Сообщений: 949
Репутация: 265 (219)
По умолчанию Re: Не правильно работает 1 из счетчиков

-=ЮрА=-, 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
nxnx вне форума
После регистрации реклама в сообщениях будет скрыта
Старый 04.02.2012, 16:13  [ТС]   #10
snadow
Новичок
 
Регистрация: 03.07.2011
Адрес: Москва
Сообщений: 27
Репутация: 0 (0)
По умолчанию Re: Не правильно работает 1 из счетчиков

crlt + z формирует значение -1, при нажатие выходит

Добавлено через 29 секунд
спасибо вам
snadow вне форума
Ответ Создать новую тему

Похожие темы
Тема Автор
Assembler, MASM, TASM Вывести в каком режиме работает каждый из счетчиков
Вывести в каком режиме работает каждый из счетчиков
Fresenius
JavaScript Счетчиков отсчета времени.
Здравствуйте. У меня есть код счетчика отсчета времени до события: <h2><div style="color:#f7630b; " id="count2"></div></h2> <script> var current="Сегодня старт!" var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec") function...
artemite
Pascal (Паскаль) Установка двух счетчиков
В задании требуется подсчитать количество перестановок и сравнений при сортировке массива двумя методами: простыми вставками и бинарными вставками. Вот процедура сортировки простыми вставками: // процедура сортировки вставками procedure InsertionSort(var A: TData; var SCount, PCount:...
QuadroX
С++ для начинающих Не могу понять почему не работает (или правильно не работает)
#include <iostream.h> #include <conio.h> #define N 5 #define M 3 void main() { int a; int i,j; cout<<"nachalnya matricha:"<<endl;
templol
MS Access обнуление счетчиков
Добрый день! Боюсь вызвать негодование, но все-же. Задача такая - обрезать таблици. Производиться обрезание таблиц определенным образом путем копирования части содержимого в другие таблици и очистки всей таблици перед возвратом содержимого надо обнулить счетчики. Обычно это делают сжимая базу....
arturpauris
Опции темы

Текущее время: 01:11. Часовой пояс GMT +4.

Компьютерный форум программистов и сисадминов
Powered by vBulletin® Version 3.8.7 PL2
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Рейтинг@Mail.ru Яндекс.Метрика