Парсинг AnsiString
есть строка вида x12+x7+x3+x1+1, необходимо получить массив такого плана [12,7,3,1,0]
Как сделать? на JScript решалось все регулярным выражением, а в си кто подскажет?
или может есть другая альтернатива представления полинома ???
Здравствуйте, у меня собственно такой вопрос...
есть строка вида x12+x7+x3+x1+1, необходимо получить массив такого плана [12,7,3,1,0]
Как сделать? на JScript решалось все регулярным выражением, а в си кто подскажет?
или может есть другая альтернатива представления полинома ???
задай Delimeter = "+" и парсь с помошью IsDelimeter()потом такжу с х.
А еще проще: проверяй каждый элемент: если попался х, тособирай число до появления + --- тут всего 1 проход по строке.
Спасибо, буду пробовать, так как си начал осваивать совсем недавно.
Напиши свой парсер регулярных выражений, или поищи готовые библиотеки.
задай Delimeter = "+" и парсь с помошью IsDelimeter()потом такжу с х.
А еще проще: проверяй каждый элемент: если попался х, тособирай число до появления + --- тут всего 1 проход по строке.
А ты не мог бы показать как это выглядит?? собирание числа до знака +
А то мне трудно сообразить..:angel:
Здравствуйте, у меня собственно такой вопрос...
есть строка вида x12+x7+x3+x1+1, необходимо получить массив такого плана [12,7,3,1,0]
Как сделать? на JScript решалось все регулярным выражением, а в си кто подскажет?
или может есть другая альтернатива представления полинома ???
Можно и в C++ регулярным выражением. См., например, библиотеку C++ Boost
Можно и в C++ регулярным выражением. См., например, библиотеку C++ Boost
я скачал этот мегаПАк.. но вот как его установить.. разобраться не смог =(
String str = "x12+x7+x3+x1+1";
int a, b, c, d, e;
sscanf(str.c_str(), "x%d+x%d+x%d+x%d+%d", &a, &b, &c, &d, &e);
и все будет :)
ах как мы любим VCL! можно же на чистом C это сделать. ну или почти на чистом...
String str = "x12+x7+x3+x1+1";
int a, b, c, d, e;
sscanf(str.c_str(), "x%d+x%d+x%d+x%d+%d", &a, &b, &c, &d, &e);
и все будет :)
почти :)
Если честно я не знаю почему народ так не любит VCL, ИМХО люди которые писали его не глупые.
почти :)
Если честно я не знаю почему народ так не любит VCL, ИМХО люди которые писали его не глупые.
да все его любят! :) по крайне мере все кто программит на Билдере. VCL и делает нашу любимую среду такой удобной, но (!) я о том, что нельзя же забывать о корнях... ну, согласись, реализация данной задачи через sscanf ведь проще, чем через IsDelimeter()!
З.Ы. что-то мы от темы отвлеклись :))
ах как мы любим VCL! можно же на чистом C это сделать. ну или почти на чистом...
String str = "x12+x7+x3+x1+1";
int a, b, c, d, e;
sscanf(str.c_str(), "x%d+x%d+x%d+x%d+%d", &a, &b, &c, &d, &e);
и все будет :)
А причем в "чистом С" String str?
А причем в "чистом С" String str?
вот поэтому и написал "почти", а вообще - ведь неизвестно как получается строка - может из файла считывается, может прямо с консоли. а фраза "на чистом С" относится к использованию scanf вместо функций класса AnsiString
ах как мы любим VCL! можно же на чистом C это сделать. ну или почти на чистом...
String str = "x12+x7+x3+x1+1";
int a, b, c, d, e;
sscanf(str.c_str(), "x%d+x%d+x%d+x%d+%d", &a, &b, &c, &d, &e);
и все будет :)
Надо еще у автора уточнить, всегда ли количество слагаемых 5.
Надо еще у автора уточнить, всегда ли количество слагаемых 5.
количество слагаемых, естественно, неограничено..
пользователь вводит полином в Едит. а задача модуля распарсить его как надо.. поэтому я думаю такой вариант, с жестким заданием 5 переменных не пройдет..
Но это уже и не важно, я тут на с# перешел, там есть прелести Регулярных выражений)))