![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Гость_Shorr Kan |
|
|||
|
Unregistered |
У меня возникла проблема с символьной строкой. Из Edit считываю строку - мне всегда казалось, что это массив. А компилятор говорит, что не может перевести INT в CHAR.... В чем может быть дело?
|
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Т.е., считываю первый элемент массива, а он говорит, что ошибка перевода INT в CHAR
|
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Странный компилятор... Int в char по жизни переводится без проблем.
А можно посмотреть проблемный участок кода? -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
код в студию!
|
|||
|
||||
| Гость_Shorr Kan |
|
||||
|
Unregistered |
Вот так я объявил строку в конструкторе
А это происходит по нажатию кнопочки...
Хотелось разделить ее побуквенно, и закинуть в listbox... Вот cFormula[i] не могу прочесть. Пишет - Cannot convert int to const char *. Компилятор - Borland 5.02 |
||||
|
|||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Не стоит путать char с char* - это совершенно разные типы.
должен спасти мир. Это сообщение отредактировал(а) Mayk - 1.6.2005, 05:28 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Дело вот в чем:
есть формула вида (a+b)*c надо разобрать формулу по частям (a+b) результат*с Пока придумал вариант посимвольно искать круглую скобу и вырезать ее... Может кто подскажет вариант поинтереснее? А конструкция вида:
Откуда такой эффект? |
|||
|
||||
| ManiaK |
|
|||
![]() Homo Sapience ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1145 Регистрация: 3.8.2004 Где: ИУ5-93 Репутация: 5 Всего: 29 |
Эк ты залез в дебри... тут тебе скорей всего надо Рекурсивно-Нисходящий алгоритм реализовывать. А это дело не пятиминутное и требует достаточно высокого уровня знаний по языку...
Вот ссылочка по теории: http://algolist.manual.ru/syntax/parsear.php |
|||
|
||||
| segmentation_fault |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 14.2.2005 Где: в интернете Репутация: 1 Всего: 1 |
Если ты точно знаешь формат твоей формулы, например если формат всегда будет c(a+b) то можно сделать так:
читаешь с начала строки символы и пока символы являются цифрами записываешь их в переменную c. потом игнорируешь следующий символ (это будет '(' ) и потом опять пока идут цифры записываешь их в переменную a. Опять же игнорируешь следующий '+' и записываешь всё до символа ')' в b. И потом просто вычисляешь формулу. Вариант конечно гораздо хуже нормальных алгоритмов разбора зато проще некуда. |
|||
|
||||
| AISIN |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 27.1.2005 Где: Пушкино Репутация: нет Всего: 1 |
Анализируешь каждый символ выставляешь приоритеты выполнения команд и потом переводишь символы в цифры и находишь свое арифмитическое выражение согласно выставленным приоритетам! --------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002% |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
Для любого выражения я использовал такой разбор:
1. Функция разбирает бинарную операцию (поиском её в строке и удалением лишних пробелом). 2. Функция разбирает выражения без скобок (использую функцию 1). Заметим, что любое выражение без скобок состоит из чередующихся операндов и операций и заносим их в массивы, отдельно ставим флаг, есть ли вначале знак операции (унарной). Создаём также 3ий массив - приоритет операций (он может вычисляться отдельной функцией). Затем пока значение максимального элемента в последнем массиве (я использовал STL) > 0 вызываем предыдущую функцию с соответствующими параметрами. Обнуляем элемент последнего массива. 3. Функция разбора любого выражения. Принцип в том, что ищем самые внутренние скобки. Я ещё делал скобки для функций (если перед скобками имя функции стоит, а не операция). ЗЫ. Я так делал (чисто учебный, естественно) свой скриптовый язык. Мой 'экзамен' в 11 классе. Кому интересно могу написать (хотя, наверно, наиболее интересно мне |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |