Forum Webscript.Ru

Программирование => Perl => Тема начата: ucG от 05 Января 2002, 22:29:44

Название: Такой вопросик....
Отправлено: ucG от 05 Января 2002, 22:29:44
...есть массив @array=(4,8,12,16) т.е. цифры в нем идут на повышение с интервалом 4...
Как мне сдлеать так, чтобы если например переменная $all=6
то из массива бралось число которое больше 6, т.е. в нашем примере это 8 ? ну и вычиталось: 8 - $all
т.е. конечный результат должен быть в виде переменной $some = \'8\' - $all

подскажите как такое реализовать....
заранее спасибо!
Название: может так
Отправлено: Green Kakadu от 05 Января 2002, 23:16:11
например так:

my $all=6;
my @array=(4,8,12,16) ;
my @new= sort {$a<=>$b} grep($_>$all, @array);
print $new[0]-$all;
Название: или
Отправлено: Green Kakadu от 06 Января 2002, 00:15:31
а можно и так:

my $all=6;
my @array=(4,8,12,16) ;
my $number;

foreach my $num(@array){
  if ($num>$all){
    $number=$num;
     last;
   }
}
print $number-$all;

если нужно то можно задать сортировку по возрастанию
Название: Такой вопросик....
Отправлено: vladsu от 06 Января 2002, 02:08:19
Hi.

Ребят, я не понимаю зачем такие сложности?


$x = 6;                                               #Ваше число
$k = 4;                                               #Кратность
print $s = (int($x/$k)+1)*$k,"\\n";      #Элемент массива кратный $k и больше $x
print $s-$x;                                         #Ваш результат
Название: Такой вопросик....
Отправлено: ucG от 06 Января 2002, 07:17:59
Всем огромное спасибо!