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

Калькулятор в книге Страуструпа - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определение количества разрядов у числа http://www.cyberforum.ru/cpp-beginners/thread929880.html
Написал программку, которая должна определять количество разрядов у чисел. При вводе двухзначных и трехзначных, программа правильно определяет разряд, но при вводе четырехзначных чисел и более, начинает определять неправильно. Помогите определить проблему. #include<iostream> using namespace std ; int main() { int dvoich, chislo,razryd = 0, del = 1; cout << "Enter 2-oe chislo: " ; cin...
C++ Функция - принять ссылку вернуть ссылку В одной из тем я интересовался записью типа int & fun (int rhs), что она значит и что именно в ней делает символ &, как я понял, программа типа: #include <iostream> int & fun (int rhs) { return rhs; } int main() { int var = 2; var = fun(var ); http://www.cyberforum.ru/cpp-beginners/thread929846.html
C++ Грамматика программы
Может ли мне кто-то наглядно объяснить что такое первичное выражение, чем оно отличается от обычного выражения. Что такое терм и чем он отличается от лексемы?
C++ Синтаксическая ошибка
Здраствуйте. Помогите, пожайлуста, выявить синтаксическую ошибку в коде: #include <fstream> #include <iostream> using namespace std; int main() { ifstream ifs ("INPUT.TXT");
C++ Где можно купить эту книгу Дейтел Х., Дейтел П. - Как программировать на C++? http://www.cyberforum.ru/cpp-beginners/thread929760.html
Где можно купить эту книгу Дейтел Х., Дейтел П. - Как программировать на C++???. И как думаете стоит ли после книги Ритчи и Кернингана Язык программирование си,начать читать книгу Страуструп Принципы и практика использования C++
C++ Пример из книги. Шилдт Всем привет. Вот пример из книги Шилдта. У меня не работает деструктор (не выводится сообщение) #include <iostream> using namespace std; class myclass{ public: int x; myclass(); ~myclass(); }; myclass::myclass(){ x=10; } подробнее

Показать сообщение отдельно
tramp_1-3
14 / 14 / 1
Регистрация: 13.10.2012
Сообщений: 428
30.07.2013, 13:43  [ТС]
Dani, настало время функции ввода (а т.к. в плюсах ввод буферизуется, это делает её самой сложной)
Ввод всего всего выражения целиком (например,2 + 4 * 8 происходит в if(!cin.get(ch)) return curr_tok = END;?
Если да, то ведь в плюсах буферизованное выражения после прочтения (while (ch!='\n' && isspace(ch))) выкидывается и нигде не хранится, тогда как происходит дальнейшее обращение к ch?
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
37
38
token_value get_token() 
{ 
char ch; 
do { // пропускает обобщенные пробелы за исключением'\n' 
if(!cin.get(ch)) return curr_tok = END; 
} while (ch!='\n' && isspace(ch)); 
switch (ch) { 
case ';': 
case '\n': 
cin >> ws;  // пропуск обобщенного пробела
return curr_tok=PRINT; 
case '*': 
case '/': 
case '+': 
case '-': 
case '(': 
case ')': 
case '=': 
return curr_tok=token_value(ch); 
case '0': case '1': case '2': case '3': case '4': 
case '5': case '6': case '7': case '8': case '9': 
case '.': 
cin.putback(ch); 
cin >> number_value; 
return curr_tok=NUMBER; 
default: // NAME, NAME= или ошибка
if (isalpha(ch)) { 
char* p = name_string; 
*p++ = ch; 
while (cin.get(ch) && isalnum(ch)) *p++ = ch; 
cin.putback(ch); 
*p = 0; 
return curr_tok=NAME; 
} 
error("недопустимая лексема");
return curr_tok=PRINT; 
} 
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru