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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.69
Sh0cK
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 58
Завершенные тесты: 1
#1

Неизвестная функция - C++

10.01.2013, 23:02. Просмотров 2301. Ответов 57
Метки нет (Все метки)

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
#include "std_lib_facilities.h"
 
class Token {
public:
        char kind;
        double value;
        Token(char ch)
                :kind(ch), value(0) {}
        Token(char ch, double val)
                :kind(ch), value(val) {}
};
 
Token get_token();
vector<Token> tok;
 
int main()
{
while(cin){
    Token t = get_token();
    tok.push_back(t);
}
for (int i=0; i<tok.size(); ++i){
    if (tok[i].kind=='*'){
            double d=tok[i-1].value*tok[i+1].value;
            }
        }
 
    return 0;
}
Проблема вот в чем: учу С++ по книге Страуструпа и в результате наткнулся на этот отрезок кода (он был в примерах Страуструпа). Он в общем-то не делает то что от негот требуют но у меня вопрос другой: что за функция get_token() она мне до этих пор не встречалась и я не понимаю в чем она заключается и зачем перед этой функцией название класса?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2013, 23:02     Неизвестная функция
Посмотрите здесь:

неизвестная функция - C++
Здравствуйте ! Хочу откомпилировать код одной программы написанной на С на компиляторе borland билдер с++ 6 версии,но появлются следующие...

Неизвестная функция. Книга. Страуструп - C++
Я видел похожу тему, но толком ответа не нашел. Сразу к делу. Есть функция get_token(). Она не из стандартной библиотеки, т.е. её нужно...

Неизвестная конструкция - C++
Задача поставлена так: Написать программу, переводящую арабские числа в римские. Задача упрощается тем, что можна считать, что 40=XXXX,...

Неизвестная ошибка - C++
Доброго время суток, я тут с толкнулся с непонятной штукой, все правильно точно так же как и показано на видео но почему то у меня ошибки...

Неизвестная ошибка с++ - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;fstream&gt; #include &lt;math.h&gt; using namespace std; ...

Неизвестная ошибка - C++
Ребята все работает все запускается, но ошибка не исчезает... Подскажите...

неизвестная ошибка - C++
Помогите с кодом который из книги по изучению С++: Вот неработающий код: #include &lt;iostream&gt; using namespace std; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sh0cK
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 58
Завершенные тесты: 1
11.01.2013, 01:58  [ТС]     Неизвестная функция #16
Avazart, спасибо, жаль он этого в книге не написал)
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,452
Записей в блоге: 17
11.01.2013, 02:00     Неизвестная функция #17
Цитата Сообщение от Sh0cK Посмотреть сообщение
Avazart, спасибо, жаль он этого в книге не написал)
Ну это в других книгах пишут...
Sh0cK
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 58
Завершенные тесты: 1
11.01.2013, 02:01  [ТС]     Неизвестная функция #18
Цитата Сообщение от Avazart Посмотреть сообщение
Ну это в других книгах пишут...
Ну так зачем объяснять одно а в своих примерах писать совершенно иное я ж не другую книгу читаю, а его)
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,452
Записей в блоге: 17
11.01.2013, 02:07     Неизвестная функция #19
Да дело в том что это место потенциальной ошибки - забыть break после case

Добавлено через 3 минуты
Цитата Сообщение от Sh0cK Посмотреть сообщение
В общем в книге предлагают при разложении на лексемы хранить их в виде пары(вид,значение), но зачем? Неужели нельзя просто хранить числа без обозначения что они являются числами?
А как хранить знаки и слова ?
Sh0cK
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 58
Завершенные тесты: 1
11.01.2013, 02:11  [ТС]     Неизвестная функция #20
Цитата Сообщение от Avazart Посмотреть сообщение
А как хранить знаки и слова ?
Слова хранить не нужно(это калькулятор), а знаки в переменной типа char, а потом согласно программе переписать в вектор типа Token
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,452
Записей в блоге: 17
11.01.2013, 02:15     Неизвестная функция #21
В коде который я приводил в enum Token_value ( curr_tok ) хранится текущее состояние(что делать со значениями) а значения в number_value и string_value соответственно их типу.

Добавлено через 1 минуту
Цитата Сообщение от Sh0cK Посмотреть сообщение
Слова хранить не нужно(это калькулятор), а знаки в переменной типа char, а потом согласно программе переписать в вектор типа Token
А если sin() или pi (=3.14) ?
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,738
11.01.2013, 02:16     Неизвестная функция #22
Цитата Сообщение от Sh0cK Посмотреть сообщение
до сих пор я думал что каждый блок case должен заканчиватся оператором break,
нет
это по моему называется провяливанием
например нужно если нечетное число присвоить 0 а если четное 1 числа от 0 до 7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
switch(i)
{
case 0:
case 2:
case 4:
case 6:
       n=1;
      break;
case 1:
case 3:
case 5:
case 7:
    n=0;
}
или если число на входе 1 надо удвоить а если 0 то вернуть 2
C++
1
2
3
4
5
6
7
switch(i)
{
  case 0:
      i++;
  case 1:
     i*=2; 
}
примеры надуманные, в жизни решаются по другому, это просто чтобы показать мощь(или слабость)switch
Sh0cK
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 58
Завершенные тесты: 1
11.01.2013, 02:23  [ТС]     Неизвестная функция #23
C++
1
2
3
4
5
6
7
8
9
class Token {
public:
        char kind;
        double value;
        Token(char ch)
                :kind(ch), value(0) {}
        Token(char ch, double val)
                :kind(ch), value(val) {}
};
Или вот допустим класс. Мы когда его используем куда девается значение 0 переменной value?
Почему нельзя реализовать вот так:
C++
1
2
3
4
5
6
7
8
9
class Token {
public:
        char kind;
        double value;
        Token(char ch)
                :kind(ch){}
        Token(double val)
                :value(val) {}
};
Отдельно знаки, отдельно литералы с плавающей точкой.

Добавлено через 2 минуты
Цитата Сообщение от Avazart Посмотреть сообщение
А если sin() или pi (=3.14) ?
Таких функций пока там нету)
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,452
Записей в блоге: 17
11.01.2013, 02:25     Неизвестная функция #24
Цитата Сообщение от Sh0cK Посмотреть сообщение
Таких функций пока там нету)
Ну там да вроде нету, а в моем примере есть еще таблица ...

Добавлено через 1 минуту
Цитата Сообщение от Sh0cK Посмотреть сообщение
Мы когда его используем куда девается значение 0 переменной value?
Ну так там инициализация в конструкторе, не пойму вопроса...
Sh0cK
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 58
Завершенные тесты: 1
11.01.2013, 02:27  [ТС]     Неизвестная функция #25
Чесно, в том коде который ты приводил много строчек для меня не понятных)
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,738
11.01.2013, 02:29     Неизвестная функция #26
Цитата Сообщение от Sh0cK Посмотреть сообщение
куда девается значение 0 переменной value?
ты имеешь ввиду это
Цитата Сообщение от Sh0cK Посмотреть сообщение
value(0)
это инициализация переменной в данном случае 0

Цитата Сообщение от Sh0cK Посмотреть сообщение
Token(char ch, double val)
* * * * * * * * :kind(ch), value(val) {}
инициализация значением переданным в конструктор
можно написать так


C++
1
2
3
4
5
6
7
8
9
10
Token(char ch)
{
kind=ch;
value=0;
}
Token(char ch, double val)
{
kind=ch;
value=val;
}
в твоей же версии в зависимости от конструктора в одной из членов класса будет мусор
Sh0cK
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 58
Завершенные тесты: 1
11.01.2013, 02:32  [ТС]     Неизвестная функция #27
Т.е. когда я ввожу выражение этот 0 не записывается в вектор?
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,452
Записей в блоге: 17
11.01.2013, 02:38     Неизвестная функция #28
0 записывается если он в конструктор передается, а если нет то мусор...

Добавлено через 3 минуты
К примеру в этом месте

C++
1
2
    case '(': case ')': case '+': case '-': case '*': case '/': 
        return Token(ch);        // let each character represent itself
Sh0cK
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 58
Завершенные тесты: 1
11.01.2013, 02:40  [ТС]     Неизвестная функция #29
Давайте по порядку:
допустим ввел я выражение 1+2, что в это время делает программа:
создает объект типа Token и считывает в него выражение вот у меня возникает собственно первый вопрос выражение которое считывается из потока ввода как оно собственно "живет" там в объекте t? Оно считывается по одному символу т.е. оно увидело 1 считало потом в класс "смотрит":"ага значит числа у нас передаются в этот конструктор" и туда его записывает?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2013, 02:41     Неизвестная функция
Еще ссылки по теме:

Неизвестная мне ошибка - C++
В общем имеется код: //--------------------------------------------------------------------------- #include &lt;iostream.h&gt; #include...

Неизвестная escape-последовательность - C++
Продолжаю допиливать свою FNP (my First Need Programm). Вроде все хорошо работает но компилятор ругается: ...

Неизвестная escape-последовательность - C++
Ger = Fre.erase(0, Fre.find_first_of(&quot;\t\t&quot;)) + &quot;&lt;\German&gt;&quot;; Прога компилируются, но Выскакивает предупреждение: Предупреждение 1 ...

Неизвестная мне ошибка с листом - C++
Привет, я тут делаю программу, которая добавляет, убирает, меняет местами и пишет лист. Я, правда, еще не так хорошо знаю листы и принципы...

Неизвестная (для меня) ошибка в коде! - C++
Выпадает вот такая ошибка в коде программы: Вот код: #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace...


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

Или воспользуйтесь поиском по форуму:
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,452
Записей в блоге: 17
11.01.2013, 02:41     Неизвестная функция #30
Ссылка по теме калькулятора Пишем свой интерпретатор языка BASIC
Yandex
Объявления
11.01.2013, 02:41     Неизвестная функция
Ответ Создать тему
Опции темы

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