товарищи, помогите, пожалуйста.
польская нотация и дек
есть у меня обратная польская нотация вида:
(пример) 1.2 3 4 * +
и нужно мне энту штуку записать в контейнер deque из STL
все ячейки у меня структуры:
struct element
{
double number; // место под число
char simbol; //место под операцию
int type; //определитель
};
т.е. если это число, то мы заполняем ячейку number, а в type = 0.
а если это строка, то заполняем simbol, а type=1
вопрос: как лучше всего реализовать запись в дек?
думала о том, чтобы сначала всю строку записать в к-н переменную, а потом уже раскладывать это дело по ячейкам. но мне почему-то кажется, что это не совсем разумно. да и могут возникнуть проблемы с преобразованием типов.
другой способ: считывать по 1 слову и там уже определять, куда что записывать. но не совсем понимаю как это грамотно реализовать.
и еще вопрос: как мне определять, что слово относится именно к числу. знаю только функцию isdigit(), но она же только по символу читает, а у меня по заданию double(
Дальше, если содержит разделитель (например, точку) - то double.
Иначе - инт.
Это так, на вскидку.
Считываем в стринг, а дальше, в зависимости от типа, преобразуем.
я немного не это имела ввиду. именно отличить число от оператора. ну вы мне в принципе подали идею. если есть число в слове, то логично, что это число) только надо на корректность проверять.
Считываем в стринг, а дальше, в зависимости от типа, преобразуем.
а не будет ли у меня проблем с double?
Посмотрите www.cplusplus.com/reference/iostream/stringstre...
Это к вопросу о переводе из строк в различные типы.
Можно даже переопределить operator>> для вашего типа данных, что бы уже в нем определялся переданный тип и заносился в нужное поле структуры.
Если нужно и интересно - покажу как.
Вообще же, я вижу следующие действия:
Получаем очередной элемент, заносим его (пожалуй) сразу в string stream, а из него в нашу структуру. В переопределенном операторе происходит определение типа и заполнение нужного поля
Можно даже переопределить operator>> для вашего типа данных, что бы уже в нем определялся переданный тип и заносился в нужное поле структуры. Если нужно и интересно - покажу как.
если не сложно, то покажите пожалуйста)
Код не то, что бы зашибись - я торопился спать)
спойлер: под катом вариант решения вашей проблемы
спасибо большое)
даже почти все поняла)