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

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

Войти
Регистрация
Восстановить пароль
 
koder
3 / 3 / 0
Регистрация: 13.06.2012
Сообщений: 28
#1

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

20.06.2012, 00:16. Просмотров 518. Ответов 6
Метки нет (Все метки)

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 можно ввести большое количество символов и в любой последовательности расставить точки,то он все ровно просчитает правильно количество точек.Два вопроса : Как вмещается больше чем один символ при том,что если вывести то будет показан первый символ и все? И как находятся эти точки?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2012, 00:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как этот код работает? (C++):

Не могу понять как работает этот код в деталях - C++
dg1-&gt;Rows-&gt;Clear();//Очищяет в датагриде строки ifstream infile (StrToChar(openFileDialog1-&gt;FileName));//Чтение из файла ...

Почему этот код работает? - C++
Почему этот код работает без единого предупреждения? Мы заведомо вылазим за границу массива. Известно что если размерность массива n,...

Здравствуйте, Почему не работает этот код? - C++
Здравствуйте.Прошу помочь.Почему не работает этот код? std::ifstream input_file(&quot;http://nanshakov.16mb.com/developed/test/hash.txt&quot;); ...

код, который прекрасно выполняет Code::Blocks не выполняеться в Студии, как сделатьь так чтобы Студия воспринимала этот код?? - C++
Ребята, обьясните мне чего код, который прекрасно выполняет Code::Blocks не выполняеться в Студии, там требуються существенно другие...

Как исправить этот код? - C++
Помогите исправить код. Знаю в чем проблема,но не знаю как решить. В книге дается схожий пример,и там все так же. Суть в том,что в классе...

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

6
NoMasters
Псевдослучайный
1762 / 1105 / 73
Регистрация: 13.09.2011
Сообщений: 3,141
20.06.2012, 00:27 #2
В переменную последовательно заносятся значения из буфера потока ввода.
0
koder
3 / 3 / 0
Регистрация: 13.06.2012
Сообщений: 28
20.06.2012, 00:53  [ТС] #3
А почему тогда если ввести hgdfdf,то всегда будет выводить h,то есть первый символ и все.Вообщем не пойму как в одной переменной с одним символом,может вводится множество символов и в них ещё проверятся совпадение на некоторые символы,если опять же нельзя вывести эту последовательность,то как оно в ней находит определенные символы?
0
NoMasters
Псевдослучайный
1762 / 1105 / 73
Регистрация: 13.09.2011
Сообщений: 3,141
20.06.2012, 00:59 #4
Ещё раз: в там всё время один символ. На каждой итерации цикла значение обновляется, извлекая следующий символ из потока ввода. Если бы вы выводили содержимое внутри цикла, то последовательно вывелась бы вся вводимая последовательность.
1
ValeryS
Модератор
6653 / 5062 / 470
Регистрация: 14.02.2011
Сообщений: 16,930
20.06.2012, 01:15 #5
попробуем по другому
нажали Ф в ch Ф
нажали В в ch В (Ф затерлась сиречь потерялась)
это как в магазине у кассы может быть только один человек подошел другой первый отошел
так понятней???

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

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

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

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

Всем спасибо за помощь и ответы.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2012, 09:24
Привет! Вот еще темы с ответами:

Как этот код будет выглядеть на C++ - C++
For i:=0 to FieldsCount-1 do Fields.Clear; Как этот код будет выглядеть на C++

Как привязать этот код в форму - C++
//Хеш-функция для алгоритма Рабина-Карпа public static int Hash(string x) { int p = 31; //Простое число ...

Как работает этот цикл???) - C++
for(int i=0; (s1 = s2)!='\0';i++) Массивы s1 и s2 символьные

Как работает этот цикл? - C++
как это работает? выдает k=7, y=270; хотя здравый смысл говорит,что на 1-ой итерации y=70,на 2-ой 720,... int y=6; int k=0; ...


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
20.06.2012, 09:24
Ответ Создать тему
Опции темы

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