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

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

Войти
Регистрация
Восстановить пароль
 
andreyananas
21 / 21 / 8
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
#1

Нуждаюсь в объяснении функций - C++

25.03.2014, 17:29. Просмотров 391. Ответов 10
Метки нет (Все метки)

Кто может человеческим языком, объяснить что делают эти функции:
  1. cin.peek()
  2. cin.clear()
  3. cin.get()
  4. getch()
Интересует и "научное" пояснения.
п.с. может посоветуйте книгу, в которой понятно описывают функции С++.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2014, 17:29     Нуждаюсь в объяснении функций
Посмотрите здесь:

Нуждаюсь в решения уравнения 2A+3B+4C+5D в с++ - C++
Помогите пожалуйста, записать и решить уравнение 2A+3B+4C+5D в с++. Очень надо, но к сожалению сам в С++ не силён((( Добавлено...

Нуждаюсь в проверки программиста. - C++
Добрый вечер! Я учусь в институте на специальности, информационная безопасность, начали проходить с++, т.к. мало чего еще понимаю, хотелось...

Друзья, я нуждаюсь в советах - C++
Здравствуйте Друзья, я нуждаюсь в советах. Мне было всегда интересно. Вот как же программисты создают разные сложные программы,...

Нуждаюсь в исправлении программы , с одномерным массивом - C++
Задан массив, содержащий N элементов. Упорядочить его элементы с четными индексами в порядке возрастания, а элементы с нечетными индексами...

Есть задание написать класс подобный string. Нуждаюсь в уточнениях - C++
Получается под символы в классе выделить обычный динамический массив из char не получится? Надо что-то еще сделать? В char же 255 символов...

Помогите в объяснении - Assembler
помогите в обьяснении ; multi-segment executable file template. include 'emu8086.inc' data segment ; add your data...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13054 / 7317 / 815
Регистрация: 27.09.2012
Сообщений: 18,053
Записей в блоге: 3
Завершенные тесты: 1
25.03.2014, 17:34     Нуждаюсь в объяснении функций #2
http://www.cplusplus.com/reference/i.../istream/peek/
http://www.cplusplus.com/reference/ios/ios/clear/
http://www.cplusplus.com/reference/istream/istream/get/
http://msdn.microsoft.com/ru-ru/library/078sfkak.aspx
andreyananas
21 / 21 / 8
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
25.03.2014, 17:42  [ТС]     Нуждаюсь в объяснении функций #3
Это типа человеческий язык? Даже не на русском)))
Croessmah
Модератор
Эксперт CЭксперт С++
13054 / 7317 / 815
Регистрация: 27.09.2012
Сообщений: 18,053
Записей в блоге: 3
Завершенные тесты: 1
25.03.2014, 17:45     Нуждаюсь в объяснении функций #4
Цитата Сообщение от andreyananas Посмотреть сообщение
Это типа человеческий язык?
Ну можете в бинарном виде коды символов посмотреть и сравнить с предложенным вариантом.
Цитата Сообщение от andreyananas Посмотреть сообщение
Даже не на русском)))
человеческие языки русским не ограничиваются, если Вы не в курсе
Brust
35 / 29 / 8
Регистрация: 16.07.2012
Сообщений: 68
26.03.2014, 05:00     Нуждаюсь в объяснении функций #5
Даже не на русском..

А без примитивных знаний английского или хотя бы умением пользоваться переводчиком, в программировании увы делать нечего )
andreyananas
21 / 21 / 8
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
26.03.2014, 16:41  [ТС]     Нуждаюсь в объяснении функций #6
Цитата Сообщение от Brust Посмотреть сообщение
А без примитивных знаний английского или хотя бы умением пользоваться переводчиком, в программировании увы делать нечего )
Я это все понимаю, тем не менее, будьте добры, объяснить.

Добавлено через 34 минуты
C++
1
2
3
4
5
6
7
while (!(cin >> b) || (cin.peek() != '\n') || (b <= 0))
                    {
                        cin.clear();
                        while (cin.get() != '\n');
                        cout << "Error enter!\n";
                        cout << "to begin again, press any key...\n";
                    }
Объясните подробно, по пунктам, как работает этот код. И в частности функции которые в нем.
recoder
130 / 130 / 28
Регистрация: 13.09.2013
Сообщений: 260
Записей в блоге: 2
26.03.2014, 16:42     Нуждаюсь в объяснении функций #7
cin.peek() - возвращает следующий символ из входного потока, на вынимая его оттуда.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
using namespace std;
 
int main(){
    char c;
    while((c=cin.peek()) != 'q')
        cin.get(c);
    cout << "You entered 'q'. The next character is ";
    cin.get(c);
    cout << c << endl;
 
    std::cin.get();
    std::cin.get();
    return 0;
}
2. cin.clear() - проверяет состояние потока. Если вы ввели не то значение, позволяет очистить поток и ввести другое значение.

C++
1
void clear (iostate state = goodbit);
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
int main()
{
    int a;
    while (a != 0){
        std::cout << "A = ";
        while(!(std::cin>>a)){
            std::cin.clear();
            while (std::cin.get() != '\n')
                continue;
            std::cout << "Please A = ";
        }
    }
    return 0;
}
3. cin.get() - http://ru.cppreference.com/w/cpp/io/get
4. getch() - http://hashcode.ru/questions/59820/c...ботать-с-getch
andreyananas
21 / 21 / 8
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
26.03.2014, 17:00  [ТС]     Нуждаюсь в объяснении функций #8
C++
1
2
3
4
5
6
7
while (!(cin >> b) || (cin.peek() != '\n') || (b <= 0))
                    {
                        cin.clear();
                        while (cin.get() != '\n');
                        cout << "Error enter!\n";
                        cout << "to begin again, press any key...\n";
                    }
Цитата Сообщение от recoder Посмотреть сообщение
cin.peek() - возвращает следующий символ из входного потока, на вынимая его оттуда.
то есть она возвращает символ из входного потока пока это будет не перевод строки '\n'?
Зачем это делать в этом коде?
recoder
130 / 130 / 28
Регистрация: 13.09.2013
Сообщений: 260
Записей в блоге: 2
26.03.2014, 17:29     Нуждаюсь в объяснении функций #9
C++
1
while (!(cin >> b) || (cin.peek() != '\n') || (b <= 0))
- Некорректный ввод или входной символ не равен '\n' или b <= 0.
C++
1
cin.clear();
- Сбрасываем поток
C++
1
while (cin.get() != '\n');
- Читаем оставшиеся символы в потоке
C++
1
2
cout << "Error enter!\n";
cout << "to begin again, press any key...\n";
- выводим сообщения.

Этот код позволяет вводить данные, если вы ввели что то некорректно, в другом случае программа бы работала некорректно(просто закрывалась). Ничего больше сказать не могу, так как вы не предоставили весь код программы.
andreyananas
21 / 21 / 8
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
26.03.2014, 17:44  [ТС]     Нуждаюсь в объяснении функций #10
Вот мне не понятен путь от cin.peek() к cin.clear()
п.с. та суть именно в этом коде, то что он делает я знаю, я не понимаю как он это делает.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2014, 18:00     Нуждаюсь в объяснении функций
Еще ссылки по теме:

Нуждаюсь в оценке - Рабочая станция
проц - INTEL Core i5 3570K - 7520руб - http://www.citilink.ru/catalog/parts/cpu/664260/ видео - ASUS GTX670 - 12 560руб -...

Нуждаюсь в помощи - C#
и так.... у меня задание сделать в С# в консоль (&quot;Konsolenanwendung&quot; на немецком, у меня прога немецкая) домак из звёзд (...

Нуждаюсь в подсказке - Базы данных
всем привет, если кому не сложно, был бы рад помощи, какую БД изучать и почему (MySQL, MongoDB и т.д.)

Нуждаюсь в оценке - Рабочая станция
Бп - http://hard.rozetka.com.ua/chieftec_gps-600a8_600_w/p246040/ процессор -...


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

Или воспользуйтесь поиском по форуму:
recoder
130 / 130 / 28
Регистрация: 13.09.2013
Сообщений: 260
Записей в блоге: 2
26.03.2014, 18:00     Нуждаюсь в объяснении функций #11
C++
1
!(cin >> b)
- Некорректный ввод. Например, вместо числа строку вводим.
C++
1
cin.peek() != '\n'
- Если считали перевод строки, оставляем его во входном потоки.
C++
1
b <= 0
- Если b < 0 или b = 0

C++
1
!(cin >> b) || (cin.peek() != '\n') || (b <= 0)
- Здесь должно выполнится одно из 3 условий. И если одно из них истина то, мы очищаем поток, что бы возможно после цикла что то могли вывести или ввести.
Yandex
Объявления
26.03.2014, 18:00     Нуждаюсь в объяснении функций
Ответ Создать тему
Опции темы

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