![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| meridian |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 8.11.2005 Репутация: нет Всего: нет |
Привет всем!
Есть вычисляемая переменная $a В зависимости от ее значения, а именно вхождения в границы [0..5], [6..10], [11..15] и т.д., нужно присвоить значение $a другой переменной, ассоциированной для каждого периода, например, если $a = 4, то присваем это значение $c0_5 если $a = 13, то присваем это значение $c11_15 и т.д. С помощью if че то длинно получается. Спасибо. |
|||
|
||||
| admsasha |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
||||
|
||||
| meridian |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 8.11.2005 Репутация: нет Всего: нет |
Все верно, как указаны , так и идут [0..5], [6..10], [11..15], далее по пять до 30-ти |
|||
|
||||
| admsasha |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
типа, вот так тогда... правда, не самый лучший вариант...
|
||||
|
|||||
| meridian |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 8.11.2005 Репутация: нет Всего: нет |
Понятно, спасиб!
Еще вопрос Как узнать, принадлежит ли значение переменной $diff к какому-либо из этих вхождений [0..5], [6..10], [11..15], и т.д. Можно сделать с if или SWITCH: А покороче есть варианты ? Это сообщение отредактировал(а) meridian - 29.11.2009, 23:20 |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
perl -E 'given ($ARGV[0]) { when ([0..5]) { say "one"; } when ([6..10]) { say "two"; } }'
|
|||
|
||||
| meridian |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 8.11.2005 Репутация: нет Всего: нет |
Понял, спб. Given есть аналог SWITCH, почти все так же. Это сообщение отредактировал(а) meridian - 30.11.2009, 01:57 |
|||
|
||||
| admsasha |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
||||
|
||||
| meridian |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 8.11.2005 Репутация: нет Всего: нет |
Саша, я ж и написал, "А покороче есть варианты?". Твой вариант был первый, что можно сделать по быстрому |
||||||
|
|||||||
| Bulat |
|
||||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
meridian,
а если сделать массив(т.е. заранее объявить всевозможные подмножества одного множества от 0 до 30), где [0..5], [6..10], [11..15] - индексы массива, а значения индексов будут одинаковы для каждого из отрезков. Т.е.
$array[$a] - смотрим что возвращает, собственно аналог варианта с хэшем для более короткого присвоения значений массива можно использовать цикл
собственно для еще большего упрощения можно отдельно обработать случай с нолем, а для остальных делить и на 5 и округлять до целого (POSIX::ceil - вернет округленное значение в большую степень, т.е. для от 0,0...1 до 1 вернет 1, от 1,0...1 до 2 вернет 2 и т.д.) - это целое и будет индексом подмножества, т.е. part <index> таким образом можно обработать дальше 30... хоть до 3 000 000 Это сообщение отредактировал(а) Bulat - 30.11.2009, 13:22 -------------------- менеджер по кодеврайтингу |
||||
|
|||||
| krypt3r |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 9.6.2009 Репутация: 2 Всего: 16 |
|
|||
|
||||
| meridian |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 8.11.2005 Репутация: нет Всего: нет |
Масса вариантов, гуд.
Спасибо всем! |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |