The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"прибавление одного символа значениям нескольких переменных"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"прибавление одного символа значениям нескольких переменных"  
Сообщение от XPurple email(ok) on 28-Апр-06, 10:38 
Подскажите как сделать так, чтобы если значение переменных < 10 дописывать перед значением
ноль.

Для одной переменной сделать легко, а как сделать для нескольких perem1,perem2,perem3 и т.д ?
$perem1=1
$perem2=12
$perem3=14

Стало
$perem1="01"
$perem2="12"
$perem3="14"

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "прибавление одного символа значениям нескольких переменных"  
Сообщение от madskull (ok) on 28-Апр-06, 11:18 
>Подскажите как сделать так, чтобы если значение переменных < 10 дописывать перед
>значением
>ноль.
>
>Для одной переменной сделать легко, а как сделать для нескольких perem1,perem2,perem3 и
>т.д ?
>$perem1=1
>$perem2=12
>$perem3=14
>
>Стало
>$perem1="01"
>$perem2="12"
>$perem3="14"

foreach (1..99) {
  $var="perem$_";
  $$var=sprintf('%02d',$$var);
}

Хотя, подозреваю, что проблема в алгоритме, а не в его реализации...

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "прибавление одного символа значениям нескольких переменных"  
Сообщение от idle (ok) on 28-Апр-06, 11:47 
>>Подскажите как сделать так, чтобы если значение переменных < 10 дописывать перед
>>значением
>>ноль.
my @a = (1..10);
@a = map { if ($_<10) { $_="0".$_ }  } @a;
TIMTOWTDI ;)
>Хотя, подозреваю, что проблема в алгоритме, а не в его реализации...
Присоединяюсь.


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "прибавление одного символа значениям нескольких переменных"  
Сообщение от XPurple email(ok) on 28-Апр-06, 12:15 
>>>Подскажите как сделать так, чтобы если значение переменных < 10 дописывать перед
>>>значением
>>>ноль.
>my @a = (1..10);
>@a = map { if ($_<10) { $_="0".$_ }  } @a;
>
>TIMTOWTDI ;)
>>Хотя, подозреваю, что проблема в алгоритме, а не в его реализации...
>Присоединяюсь.
Требуется к значениям числа, месяца, часов и секунд добавлять 0, если значение меньше 10.
Не вижу здесь никого особого алгоритма,чтобы в нем ошибиться.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

4. "прибавление одного символа значениям нескольких переменных"  
Сообщение от madskull (ok) on 28-Апр-06, 12:25 

>Требуется к значениям числа, месяца, часов и секунд добавлять 0, если значение
>меньше 10.
>Не вижу здесь никого особого алгоритма,чтобы в нем ошибиться.

таки, видимо, нужно что-то вроде:
printf('%02d.%02d.%02d %02d:%02d:%02d', $d,$m,$y,$H,$M,$S);
:)

Каков вопрос - таков ответ.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

5. "прибавление одного символа значениям нескольких переменных"  
Сообщение от XPurple email(ok) on 28-Апр-06, 12:47 
>
>>Требуется к значениям числа, месяца, часов и секунд добавлять 0, если значение
>>меньше 10.
>>Не вижу здесь никого особого алгоритма,чтобы в нем ошибиться.
>
>таки, видимо, нужно что-то вроде:
>printf('%02d.%02d.%02d %02d:%02d:%02d', $d,$m,$y,$H,$M,$S);
>:)
>
>Каков вопрос - таков ответ.
Я понимаю, но люди с разной квалификацией обращаются
if ($d < 10)
{$d="0$d";}
if ($m < 10)
{$m="0$m";}
Вот эту конструкцию как заменить на более правильную ?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

6. "прибавление одного символа значениям нескольких переменных"  
Сообщение от idle (ok) on 28-Апр-06, 13:00 
>>
>>>Требуется к значениям числа, месяца, часов и секунд добавлять 0, если значение
>>>меньше 10.
>>>Не вижу здесь никого особого алгоритма,чтобы в нем ошибиться.
>>
>>таки, видимо, нужно что-то вроде:
>>printf('d.d.d d:d:d', $d,$m,$y,$H,$M,$S);
>>:)
>>
>>Каков вопрос - таков ответ.
>Я понимаю, но люди с разной квалификацией обращаются
>if ($d < 10)
>{$d="0$d";}
>if ($m < 10)
>{$m="0$m";}
>Вот эту конструкцию как заменить на более правильную ?
Вам вроде уже написали. Если речь идёт о датах, тогда более правильно воспользоваться strftime.
use POSIX qw(strftime);
my ($month,$day) = ((strftime "%m",localtime), (strftime "%d",localtime))
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

7. "прибавление одного символа значениям нескольких переменных"  
Сообщение от madskull (ok) on 28-Апр-06, 14:32 

>Вот эту конструкцию как заменить на более правильную ?

В перле все, что красиво и работает - правильно.
Вариантов полно.

$d="0$d" if $d < 10;
$d < 10 && $d="0".$d;
$d =~ s/^(\d)$/0$1/;
и так далее и тому подобное.

Я бы лично использовал sprintf.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

8. "прибавление одного символа значениям нескольких переменных"  
Сообщение от XPurple email(ok) on 03-Май-06, 07:10 
>
>>Вот эту конструкцию как заменить на более правильную ?
>
>В перле все, что красиво и работает - правильно.
>Вариантов полно.
>
>$d="0$d" if $d < 10;
>$d < 10 && $d="0".$d;
>$d =~ s/^(\d)$/0$1/;
>и так далее и тому подобное.
>
>Я бы лично использовал sprintf.

А так не очень, как считаете ?
foreach $calc (@before)
    {if ($calc < 10)
{
$hash{$calc}="0$calc";

}
else
{$hash{$calc}=$calc;}

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

10. "прибавление одного символа значениям нескольких переменных"  
Сообщение от madskull (ok) on 03-Май-06, 08:37 

>А так не очень, как считаете ?
>foreach $calc (@before)
>    {if ($calc < 10)
>{
>$hash{$calc}="0$calc";
>
>}
>else
>{$hash{$calc}=$calc;}

Можно и так. Вот только смысл как-то от меня ускальзывает...
Ведь, по сути, создается массив с соответствующими "zerofill" значениями.
Тогда уж лучше использовать map.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

11. "прибавление одного символа значениям нескольких переменных"  
Сообщение от XPurple email(ok) on 03-Май-06, 09:09 
>Тогда уж лучше использовать map.
попробую map , спасибо.
А пока остановился на printf '%02d' -для вычисляемых значений и strftime для дат, как вы и предлагали. Лишний раз убеждаюсь - люди на форуме плохого не посоветуют ;)
Первый ответ ваш, madskull, мне понравился своей точностью. Хотя ,как правильно сказали, какой вопрос - такой ответ. ;)


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

9. "прибавление одного символа значениям нескольких переменных"  
Сообщение от XPurple email(ok) on 03-Май-06, 08:18 
>
>Я бы лично использовал sprintf.
Это в другом месте используется. Для вычисления начала и конца недели, т.е. для записи вида 01.05.2006 - 07.05.2006


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру