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

Как этот код работает? - C++

Восстановить пароль Регистрация
 
koder
3 / 3 / 0
Регистрация: 13.06.2012
Сообщений: 28
20.06.2012, 00:16     Как этот код работает? #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
#include <iostream>
using namespace std;
 
int main ()
{
    char ch = 0;
    int count = 0;
 
    cout << "Please enter a sentence:" << endl;
    
    while ((cin >> ch) && ch != '$')
    {
        if (ch == '.')
        {
            count++;
        }
    }
 
    cout << "Dots: " << count << endl;
 
    system("pause");
    return 0;
}
Было задание в книге Шилдта на 153 странице :

Напишите программу, которая считывает с клавиатуры символы до тех
пор, пока не будет введен символ "$". Организуйте в программе подсчет
количества введенных точек. Результаты подсчета должны выводиться по
окончании выполнения программы.

Думал над его реализацией пол дня с перерывами,мозг кипел а толку не было,отчаившись решил загуглить и нашел код что выше,как раз в нем я и увидел почему никак не мог придумать алгоритма на основе прочитанных данных из 154 страниц.

Если в переменную с типом данных char,можно занести только один символ,то как работает этот скрипт,если в переменную ch можно ввести большое количество символов и в любой последовательности расставить точки,то он все ровно просчитает правильно количество точек.Два вопроса : Как вмещается больше чем один символ при том,что если вывести то будет показан первый символ и все? И как находятся эти точки?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1737 / 1080 / 69
Регистрация: 13.09.2011
Сообщений: 3,093
20.06.2012, 00:27     Как этот код работает? #2
В переменную последовательно заносятся значения из буфера потока ввода.
koder
3 / 3 / 0
Регистрация: 13.06.2012
Сообщений: 28
20.06.2012, 00:53  [ТС]     Как этот код работает? #3
А почему тогда если ввести hgdfdf,то всегда будет выводить h,то есть первый символ и все.Вообщем не пойму как в одной переменной с одним символом,может вводится множество символов и в них ещё проверятся совпадение на некоторые символы,если опять же нельзя вывести эту последовательность,то как оно в ней находит определенные символы?
NoMasters
Псевдослучайный
1737 / 1080 / 69
Регистрация: 13.09.2011
Сообщений: 3,093
20.06.2012, 00:59     Как этот код работает? #4
Ещё раз: в там всё время один символ. На каждой итерации цикла значение обновляется, извлекая следующий символ из потока ввода. Если бы вы выводили содержимое внутри цикла, то последовательно вывелась бы вся вводимая последовательность.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,048
20.06.2012, 01:15     Как этот код работает? #5
попробуем по другому
нажали Ф в ch Ф
нажали В в ch В (Ф затерлась сиречь потерялась)
это как в магазине у кассы может быть только один человек подошел другой первый отошел
так понятней???

Добавлено через 2 минуты
Цитата Сообщение от koder Посмотреть сообщение
А почему тогда если ввести hgdfdf,то всегда будет выводить h,то есть первый символ
это где это у тебя выводится символ???
xADMIRALx
 Аватар для xADMIRALx
66 / 60 / 1
Регистрация: 09.06.2012
Сообщений: 291
20.06.2012, 01:34     Как этот код работает? #6
koder

Изучаем цикл while{};

А так если вы попробуете (cin >> ch) засунуть вперед то и получите, то чего ждали...

Проста каждый раз идет функция cin >> ch ,поэтому буффер не переполняется...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2012, 09:24     Как этот код работает?
Еще ссылки по теме:

C++ Как исправить этот код?
Почему не работает этот код? C++
Как структуру впихнуть в этот код с++ C++

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

Или воспользуйтесь поиском по форуму:
koder
3 / 3 / 0
Регистрация: 13.06.2012
Сообщений: 28
20.06.2012, 09:24  [ТС]     Как этот код работает? #7
Цитата Сообщение от NoMasters Посмотреть сообщение
Ещё раз: в там всё время один символ. На каждой итерации цикла значение обновляется, извлекая следующий символ из потока ввода. Если бы вы выводили содержимое внутри цикла, то последовательно вывелась бы вся вводимая последовательность.
Все понял.Спасибо).Сегодня с утра это показалось очень просто,а вчера что то совсем ни в какую,я когда смотрел на код,то игнорировал цикл и думал,если ввести 80 символов,то циклу хватит одного раза для добавления их в переменную,вот из такого дальше и появились проблемы понимания.Вообщем перегрелся наверное.

Всем спасибо за помощь и ответы.
Yandex
Объявления
20.06.2012, 09:24     Как этот код работает?
Ответ Создать тему
Опции темы

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