![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
sembler |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 25.4.2005 Репутация: нет Всего: нет |
Мои познания синтаксиса с++ крайне малы, а в плане строковых переменных вообще равны нулю. Столкнулся с проблемой, необходимо написать программу перекодировки математической записи выражения (11*21/31+41) в обратную польскую (11 21 * 31 / 41 +). Алгоритм несложный. Проблема заключается в том, что я не умею работать с символами. Как можно считать набор цифр и соеденить их в одно число.
Короче мне надо разделить исходное выражение в массив, где по очереди находились бы скобки, операторы и операнды. Пример: входные данные: 21*(24+6)/5 исходные: массив [0] = 21 [1] = * [2] = ( [3] = 24 [4] = + [5] = 6 [6] = ) [7] = / [8] = 5 Желательно работающей прогой, чтобы я видел пример работающий со строками. ps извините если мой вопрос rtfm... Просто я и без с++ отлично смогу прожить, а вот задачку решить надо. |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Операнды и операторы складываются в различные массивы, потому что имеют разные типы, а преобразовывать int обратно в строку я не стал. Я прекрасно понимаю, что для новичка в C++ такой код выглядит... э-э... не очень понятно, но пока ничего больше в голову не лезет ![]() Синтаксис работы со строками в C++, если использовать std::string, мало чем отличается от других языков, так что скажите поточнее, что вам непонятно. Это сообщение отредактировал(а) Void - 6.11.2005, 21:51 -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
sembler |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 25.4.2005 Репутация: нет Всего: нет |
Я не упомянул, что программу надо писать на turbo c++, а то у меня нет библиотек iostream, sstream...
дело в том, что я только мельком просмотрел синтаксис с++ и там строки были реализованы как массивы символов. |
|||
|
||||
sembler |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 25.4.2005 Репутация: нет Всего: нет |
А как узнать номер ascii символа (Только не через print_f)?
|
|||
|
||||
Exekutor |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 1.11.2005 Где: Казахстан. Костан ай Репутация: 1 Всего: 4 |
Номер узнать просто - функцией int(char ch);
Добавлено @ 10:45 а вообще используй структуры. Читаешь строку ввода в строку и разбиваешь ее по структурам. -------------------- [color=blue][size=2]En taro addun, ma sol larinas[/size][/color] |
|||
|
||||
sembler |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 25.4.2005 Репутация: нет Всего: нет |
Люди, хельп ми плиз!
|
|||
|
||||
Neitron |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 580 Регистрация: 3.10.2005 Где: Москва Репутация: 2 Всего: 5 |
Нет такой ф-ции int(char) Это называется преобразование типа. Небезопасное.
Это библиотеки стандарта самого языка С++ Поэтому у тебя должны быть эти библиотеки, а если нет, то у тебя урезанная дрянная версия неполного С++. -------------------- Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей. Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |