Автор Тема: Perl vs Числа  (Прочитано 7315 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн FANTAzeRus

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 93
  • +0/-0
  • 0
    • Просмотр профиля
Perl vs Числа
« : 17 Ноября 2003, 15:23:47 »
Имею: допустим число 43
Хочу: Получить число ближайшее(большее) 50

типа функции

$max=48;
my $HIGH=getHign($max);

Оффлайн ondr

  • Модератор
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 440
  • +0/-0
  • 0
    • Просмотр профиля
Perl vs Числа
« Ответ #1 : 17 Ноября 2003, 15:50:59 »
Ты хоть сам то понял что написал?
0 OK, 0:1

Оффлайн FANTAzeRus

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 93
  • +0/-0
  • 0
    • Просмотр профиля
Perl vs Числа
« Ответ #2 : 17 Ноября 2003, 15:54:43 »
Так понятнее???

43-50
27-30
18-20
3-10
79-80

Оффлайн FANTAzeRus

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 93
  • +0/-0
  • 0
    • Просмотр профиля
Perl vs Числа
« Ответ #3 : 17 Ноября 2003, 15:55:35 »
т.е. нужно найти следующее большее число кратное 10

Оффлайн ondr

  • Модератор
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 440
  • +0/-0
  • 0
    • Просмотр профиля
Perl vs Числа
« Ответ #4 : 17 Ноября 2003, 16:03:59 »
int($max/10)*10+10;
0 OK, 0:1

Оффлайн FANTAzeRus

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 93
  • +0/-0
  • 0
    • Просмотр профиля
Perl vs Числа
« Ответ #5 : 17 Ноября 2003, 16:55:05 »
Фсе получилось! Спасибо!

Оффлайн vladsu

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 271
  • +0/-0
  • 0
    • Просмотр профиля
    • http://vladislavsurguchev.eu/
Perl vs Числа
« Ответ #6 : 17 Ноября 2003, 20:55:42 »
Цитировать
ondr:
int($max/10)*10+10;

Если только в $max не число оканчиваюшееся на 0.
----------------------------------------------
Мой сайт чёрно-белых фотографий из разных уголков мира тут

Оффлайн ondr

  • Модератор
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 440
  • +0/-0
  • 0
    • Просмотр профиля
Perl vs Числа
« Ответ #7 : 18 Ноября 2003, 10:34:56 »
vladsu
Ты не знаешь как выполнить проверку?
Тебя это смущает?
Или тебе хочется пофлеймить?

Если ты знаешь вариант лучше, напиши его, и тебе будут благодарны, а такие посты, как твой, вызывают лишь негативную реакцию.
0 OK, 0:1

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Perl vs Числа
« Ответ #8 : 18 Ноября 2003, 11:41:55 »
ondr ответил на поставленный вопрос абсолютно верно.
Тема закрыта.
The documentations is your friend

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Perl vs Числа
« Ответ #9 : 18 Ноября 2003, 15:05:16 »
NeoNox
Не прав,
до обсуждения floor и ceil не дошли.
FANTAzeRus
ondr
Рекомендую посмотреть что бы обойтись без лишних проверок.
2B OR NOT 2B = FF

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Perl vs Числа
« Ответ #10 : 18 Ноября 2003, 15:57:05 »
Тему открыл.
Chs
Ок хочется услышать обоснование подгрузки POSIX в данном случае.
И еще раз напомню условие:
Цитировать
FANTAzeRus:
Имею: допустим число 43 Хочу: Получить число ближайшее(большее) 50
The documentations is your friend

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Perl vs Числа
« Ответ #11 : 18 Ноября 2003, 16:31:51 »
NeoNox
Цитировать

 хочется услышать обоснование подгрузки POSIX в данном случае.

Ну можно подгрузить всего одну функцию и если мне не изменяет память, то начиная с какойто версии перла POSIX подгружается автоматом.

А все это затем, что бы потом, когда вокруг этой программы нарастет еще не одна не разбираться в странной ошибке.:))
2B OR NOT 2B = FF

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Perl vs Числа
« Ответ #12 : 18 Ноября 2003, 16:41:52 »
(пожимая плечами)There\'s More Than One Way To Do It! ;)
Кстати я не совсем уверен в автоматической загрузке POSIXа. Даже наоборот... Perl 5.8.0
The documentations is your friend

Оффлайн vladsu

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 271
  • +0/-0
  • 0
    • Просмотр профиля
    • http://vladislavsurguchev.eu/
Perl vs Числа
« Ответ #13 : 19 Ноября 2003, 00:51:16 »
Цитировать
ondr:
вызывают лишь негативную реакцию.


Негативную реакцию вызывает Ваш пост, а я всего лишь хотел обратить внимание на "подводный камень"!

По теме:

use Math::Round qw(nhimult);

my $osn = 10;
my @a  = qw(1 4 5 9 1.1 1.12 10 10.00000001 19 -1 -1.1 -10);

print $_, " => ", nhimult($osn, $_),"\\n" for @a;


Хотя это частнай случай POSIX.
« Последнее редактирование: 19 Ноября 2003, 01:00:45 от vladsu »
----------------------------------------------
Мой сайт чёрно-белых фотографий из разных уголков мира тут

Оффлайн C++

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 221
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Perl vs Числа
« Ответ #14 : 19 Ноября 2003, 15:42:01 »
Можно сделать проще и без проверок :)

#!/usr/bin/perl
@digits=(1,12,14,23,49,55,20,70,92,56,31,49,80,900,782);
foreach 
$digit (@digits)
{
  print 
"$digit - ",round($digit),"\\n";
}
sub round
{
  return(
$_[0]-$_[0]%10+10*($_[0]%10!=0))
}

Значение перации $_[0]%10 можно сохранить в скаляре и заменить ее на этот скаляр.
Результат работы:

10
12 
20
14 
20
23 
30
49 
50
55 
60
20 
20
70 
70
92 
100
56 
60
31 
40
49 
50
80 
80
900 
900
782 
790

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28