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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
aleksand
21 / 9 / 2
Регистрация: 18.06.2011
Сообщений: 185
#1

Объясните как работает программа - C++

11.10.2012, 20:04. Просмотров 312. Ответов 7
Метки нет (Все метки)

Данная программа делает подсчёт символов. Помогите разобраться как она работает. Сижу смотрю - и ступор просто
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
int main()
{
    long nc;
    nc = 0;
    while(getchar()!=EOF) { // тут мы ввели значение например "привет"
        ++nc; //nc = 1
        printf("%ld\n", nc);// должно вывести 1, а выводит несколько чисел(7 ровно если слово "привет") на разных строках
    }
 
    getchar();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2012, 20:04     Объясните как работает программа
Посмотрите здесь:

объясните как работает программа - C++
A в степени K, как работает эта программа, за что отвечают m и s ? #include &quot;stdafx.h&quot; #include &quot;iostream&quot; using namespace std; ...

Объясните как работает программа - C++
Цель задачи была: Возведение X в 59 степень за самое малое количество шагов. 1. Ввод (X); 2. X2 = X*X; 3. X4 = X2*X2; ...

Объясните как работает программа - C++
Если символ: не пробел, не новая строка, не табуляция. То in присваивается no(все слова). Дальше я вообще не понял как программа работает....

Объясните как работает программа - C++
Задание звучит так: &quot;Разработать функцию, в которую передаются в качестве аргументов массив типа float и его размер. Функция должна...

Объясните, как работает программа - C++
программа по трем введеным числам определяет и выводит на экран число имеющее в составе наибольше едениц. Пожалуйста, объясните подробно...

Объясните, как работает программа - C++
объясните как работает программа #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; bool Р(int n) { for (int i =...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Евгений89
99 / 99 / 9
Регистрация: 17.04.2011
Сообщений: 554
Завершенные тесты: 2
11.10.2012, 20:29     Объясните как работает программа #2
у тебя подсчет nc с 0 идет поменяй nc=0 на nc=1
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.10.2012, 20:29     Объясните как работает программа #3
То что ввели попадает в буфер ввода (в очередь ввода). При каждой итерации цикла getchar() будет извлекать оттуда по одному символу, при этом счётчик nc будет увеличиваться на единицу, и выводиться на экран. Цикл будет продолжаться пока не будет введён символ конца файла (Cntr + Z). Семь выводится потому, что считается ещё и символ новой строки ('\n'), который вводится при нажатии Enter.
Евгений89
99 / 99 / 9
Регистрация: 17.04.2011
Сообщений: 554
Завершенные тесты: 2
11.10.2012, 20:30     Объясните как работает программа #4
я за место printf cout поставил бы
aleksand
21 / 9 / 2
Регистрация: 18.06.2011
Сообщений: 185
11.10.2012, 20:40  [ТС]     Объясните как работает программа #5
Цитата Сообщение от alsav22 Посмотреть сообщение
То что ввели попадает в буфер ввода (в очередь ввода). При каждой итерации цикла getchar() будет извлекать оттуда по одному символу, при этом счётчик nc будет увеличиваться на единицу, и выводиться на экран. Цикл будет продолжаться пока не будет введён символ конца файла (Cntr + Z). Семь выводится потому, что считается ещё и символ новой строки ('\n'), который вводится при нажатии Enter.
Спасибо за вразумительный ответ
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.10.2012, 20:45     Объясните как работает программа #6
Чтобы это всё увидеть, наберите такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
int main()
{
    long nc;
    nc = 0;
    unsigned char ch;
    while(true) 
    { 
        ch = getchar();
        
        ++nc;
        if (ch != '\n') 
           printf("%ld %c %d\n", nc, ch, (int)ch);
        else printf("%ld \\n %d\n", nc, (int)ch);
    }
 
    getchar();
    return 0;
}
Будут видны символы, который getchar() извлекает и их коды. Код Enter - 10.
aleksand
21 / 9 / 2
Регистрация: 18.06.2011
Сообщений: 185
11.10.2012, 20:59  [ТС]     Объясните как работает программа #7
Разобрался, всем спасибо.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2012, 21:09     Объясните как работает программа
Еще ссылки по теме:

Объясните, как работает программа - C++
Поясните пожалуйста чайнику! Объясните плиз как работает программа, то есть что значит &quot;**&quot; и остальные строки плиз очень прошу!!!! ...

Объясните пожалуйста как работает программа - C++
объясните пожалуйста код с момента появления &quot;bool fl&quot;, как это вообще работает? #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include...

Объясните как работает эта программа - C++
#include &lt;stdio.h&gt; #include &lt;iostream&gt; enum { OUT, IN }; int main () { int c, nw, state; state = OUT;

Объясните пожалуйста как работает программа!! - C++
#include&lt;iostream&gt; #include&lt;cstdlib&gt; using namespace std; int *Create(int n) { if(n&lt;=10000) { int *arr; arr...


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

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.10.2012, 21:09     Объясните как работает программа #8
Цитата Сообщение от aleksand Посмотреть сообщение
Почему у нас независимо от того что мы введём(имеется ввиду просто enter или слово+ enter) у нас всё равно выводится одно и тоже количество nl(хотя у нас чётко написано, что только если у нас c=='\n', т.е. только ввод клавиши интер, а не слово + enter)?
Потому что, если вводите слово + Enter или просто Enter, nl считает только количество Enter. А сколько их, в этих двух вводах? По одному.
Yandex
Объявления
11.10.2012, 21:09     Объясните как работает программа
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru