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

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

Войти
Регистрация
Восстановить пароль
 
Spirit370
1 / 1 / 2
Регистрация: 08.08.2013
Сообщений: 86
#1

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

27.03.2014, 01:58. Просмотров 305. Ответов 2
Метки нет (Все метки)

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

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

разбить класс - C++
Всем привет! Задача Описание класса находится в файле myfile.h . Описание функций в myfile.cpp. Необходимо перенести часть функций в...

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

Разбить числа: по 7 чисел на строку - C++
Помогите, буду очень благодарен! Задача по числам Фибоначчи Просьба переписать вместо &quot;printf и scanf&quot; сделать &quot;cout и cin&quot; и сделать...

Разбить файл на текст и числа - C++
2.Дан текстовый файл. В каждом его строке первые 30 позиций отводятся под текст, а оставшаяся часть - под действительное число. Создать два...

объединение лексем в единое целое - C++
Программа должна считывать тел. номер в виде xxx-xxxx, затем с помощью функции strtok разбить его на 2 лексемы, а потом склеить их и...

Введенную строку разбить на отдельные числа - C++
Надо вводимую строку разбить на отдельные числа по пробелам и записать в массив.Пример: char string1; cin.getline(string1, 128); Пример...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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;
У тебя собственно и записывается полностью значение.
0
Spirit370
1 / 1 / 2
Регистрация: 08.08.2013
Сообщений: 86
27.03.2014, 20:56  [ТС] #3
Спасибо)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2014, 20:56
Привет! Вот еще темы с ответами:

Разбить число типа double на 2 числа - C++
Добрый день! Попалась мне такая задача - есть 2 интовые переменные, есть число double. Их нужно сложить таким образом : к 1-му интовому...

Разбивка на лексемы и состовление из лексем строк - C++
Мне уже пользователи форума уже помогли. Ну есть еще маленькая проблема. Стоит задача считать текстовый файл с учетом пробелов между...

Написать анализатор кода, определяющий тип лексем - C++
Допустим есть строка и мне нужно её поделить на точки, запятые, else и так далее, как это сделать на c++ Добавлено через 1 минуту if...

Разбить N на более простые числа, в сумме дающие это N - C++
Нашел я как-то в одной книге задачу. До сих пор бьюсь над ее решением. Может кто подскажет программу для ее решения (на Visual C++,либо на...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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