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

Класс лексем, разбить числа - C++

Восстановить пароль Регистрация
 
Spirit370
 Аватар для Spirit370
1 / 1 / 2
Регистрация: 08.08.2013
Сообщений: 86
27.03.2014, 01:58     Класс лексем, разбить числа #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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
class Token {
public:
            // Вид лексемы                                                       
    double value;     // Для чисел                                                         
    char ex;    // Создаём объект класса Token                                       
                      // Из переменной типа char                                           
        //Иннициализировать член kind значением переменной ch       
    Token(char e)
        :ex(e){}
        //И установить член value = 0                               
    
    Token( double val)     // Создаём объект класса Token                          
                                   // Из переменных типа char и double
        : value(val) { }//
};
Token get_token()
{
    char ch = ' ';
    cin >> ch;
    switch(ch)
    {
    
    
    
    
    case ';':{return Token(ch);}
    case '0': case '1': case '2': case '3': case '4':
    case '5': case '6': case '7': case '8': case '9':
        {
            
            cin.putback(ch);
            double val;
            cin>>val;
            return Token(val);
        }
    }
}
vector<Token> tok;
int main()
{cout << "Input: ";
   while (cin)
   {
       Token t = get_token();
       tok.push_back(t);
 
 
       if(t.ex  == ';')
       {
        for(int i = 0;i<(tok.size())-(1);i++)
        {
            cout << endl << tok[i].value << endl;
        }
        keep_window_open();
        return 0;
       }
       
       
   }
      
 
}
если ввести 55, то выводиться 55, хотя по моему чтению программы, должно выводиться раздельно
5

5

(((
Объясните плиз в каком месте программы мне ставить себе фэйспаум, и почему!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2014, 01:58     Класс лексем, разбить числа
Посмотрите здесь:

Сохранение всех входящих лексем(строк) в порядке поступления C++
разбить класс C++
C++ Разбить число типа double на 2 числа
объединение лексем в единое целое C++
Разбивка на лексемы и состовление из лексем строк C++
Разбить числа: по 7 чисел на строку C++
Выделение лексем C++
Разбить файл на текст и числа C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GetVariable
 Аватар для GetVariable
163 / 119 / 5
Регистрация: 17.03.2013
Сообщений: 283
27.03.2014, 08:10     Класс лексем, разбить числа #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Когда ты вводишь значение "55".

C++
1
2
3
    char ch = ' ';
 
    cin >> ch;
У тебя ch имеет всего 1 байт, те в него входит один символ. те 55, становится просто '5', 98 просто 9.

Так вот, у тебя в буфере остался ещё один символ и когда ты
C++
1
2
 double val;
         cin>>val;
У тебя собственно и записывается полностью значение.
Spirit370
 Аватар для Spirit370
1 / 1 / 2
Регистрация: 08.08.2013
Сообщений: 86
27.03.2014, 20:56  [ТС]     Класс лексем, разбить числа #3
Спасибо)
Yandex
Объявления
27.03.2014, 20:56     Класс лексем, разбить числа
Ответ Создать тему
Опции темы

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