Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> регулярное выражение, знак числа 
V
    Опции темы
wlad110
Дата 25.6.2009, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.6.2009

Репутация: нет
Всего: нет



Подскажите как удобнее получать знак числа

Код

    using namespace std;
    using namespace boost;    
    ...

    string str("-3x^2-7x+1=0"); // например имеем такое уравнение 
    //дело в том что -3 записывается в число как +3, т.е. знак перед числом игнорируется
  
    int n,d[3]={0}; // n - количество членов  d хранит a,b,c   
    regex reg("(-*\\d+)x\\^*\\d*([+-]*\\d+)x([+-]*\\d*)=*\\d*"); 
    smatch what;   
    regex_search(str,what,reg);

    what[3]==""?n=2:n=3;// проверяем есть ли "c"

    for(int i=0; i<n; ++i)
        d[i] = lexical_cast<int>(what[i+1]);

    ... 
    дальше идет решение


Можно добавлять в регулярное выражение (-*), создать дополнительные переменные для определения знака и т.п., но мб есть более простое решение ?

// блин всё оказалось просто. тема не актуальна smile

Это сообщение отредактировал(а) wlad110 - 25.6.2009, 12:52
PM MAIL   Вверх
zim22
Дата 25.6.2009, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(wlad110 @  25.6.2009,  11:56 Найти цитируемый пост)
using namespace::std;

ну и как, компилится?
***
облом мне: компилится smile

Это сообщение отредактировал(а) zim22 - 25.6.2009, 12:17


--------------------
PM MAIL   Вверх
wlad110
Дата 25.6.2009, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.6.2009

Репутация: нет
Всего: нет



Цитата(zim22 @ 25.6.2009,  12:16)
Цитата(wlad110 @  25.6.2009,  11:56 Найти цитируемый пост)
using namespace::std;

ну и как, компилится?
***
облом мне: компилится smile

)) по запарке, потом уже дописал, чтоб ясно было откуда ф-и и объекты брал )
PM MAIL   Вверх
xvr
Дата 25.6.2009, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Вообще то уравнения лучше разбирать не регулярными выражениями. Для этого существуют грамматики, и регулярками они не описываются  smile 

PM MAIL   Вверх
wlad110
Дата 25.6.2009, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.6.2009

Репутация: нет
Всего: нет



Цитата(xvr @ 25.6.2009,  12:29)
Вообще то уравнения лучше разбирать не регулярными выражениями. Для этого существуют грамматики, и регулярками они не описываются  smile

можно пример тогда?)

Это сообщение отредактировал(а) wlad110 - 25.6.2009, 12:32
PM MAIL   Вверх
zim22
Дата 25.6.2009, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(wlad110 @  25.6.2009,  12:32 Найти цитируемый пост)
можно пример тогда?)

простенький пример есть в Страуструпе. на примере калькулятора. 
isbn 5-7989-0223-4
стр.148



--------------------
PM MAIL   Вверх
wlad110
Дата 25.6.2009, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.6.2009

Репутация: нет
Всего: нет



Цитата(zim22 @ 25.6.2009,  12:36)
Цитата(wlad110 @  25.6.2009,  12:32 Найти цитируемый пост)
можно пример тогда?)

простенький пример есть в Страуструпе. на примере калькулятора. 
isbn 5-7989-0223-4
стр.148

я его читал, но мне кажется слишком нагорожено по сравнению с моим, т.к. в уравнение может быть не больше 3 членов.
хотя я делал чтобы просто немного разобраться в регулярных выражениях и бусте, так что в любом случае своё получил =)
PM MAIL   Вверх
xvr
Дата 25.6.2009, 14:00 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Простой пример - ваше исходное выражение (-3x^2-7x+1=0) может быть записанно например так:
Код

-3x^2-7x+1=0
-7x-3x^2+1=0
1-3x^2-7x=0
1-7x-3x^2=0
Если брать уравнение 2й степени в общем, то в нем вообще могут отсуствовать некоторые части
Код

-3x^2-7x=0
-3x^2+1=0
-3x-7x+1=0
-3x-7x=0
-3x+1=0
-3x=0
regexp весь этот зоопарк не возьмет

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0466 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.