Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2013, 21:17   #921
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Ord(i>0)-Ord(i<0)
В точку..
Можно еще так..
n div (n+Ord(n=0))
Цитата:
return a / (abs(a) + 1 / (abs(a) + 1));
В точку..
Poma][a вне форума Ответить с цитированием
Старый 28.12.2013, 21:22   #922
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если для delphi, то
Вариант с div только для целого аргумента
Вариант с / для любых, но вернет плавающее и не факт, что точно 1 или -1
Вариант с ord подходит для любых случаев
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.12.2013, 21:25   #923
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Везде целые числа.. правда, я об этом тоже умолчал..
Poma][a вне форума Ответить с цитированием
Старый 28.12.2013, 21:27   #924
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Везде целые числа
/ не для целого результата
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.12.2013, 21:32   #925
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

1) Мой код для си (где '/' для целых это div);
2) Нам запрещали в неком круге задаче так использовать ord, т.к. это выглядит скрытым ветвлением (нужно было решить без ветвлений);
3) Ord и правда универсальнее.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 28.12.2013, 21:33   #926
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
/ не для целого результата
Это про вариант BDA? Дык в Си деление и целочисленное деление - это "/"
Poma][a вне форума Ответить с цитированием
Старый 28.12.2013, 22:07   #927
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

C си обмишурился. Звиняйте. А вот
Цитата:
это выглядит скрытым ветвлением
Можно согласится с большой натяжкой - сравнение есть, но ветвления то нет. А только с битовыми операциями поиграться не пробовали?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.12.2013, 22:50   #928
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

Да, Вы правы, наверное, были запрещены операции сравнения. Честно говоря, давно это было. Битовые операции для функции sign? Не пробовал
Опять же только для целых:
Код:
unsigned k = 0, p;
for (int i = 0; i < 8 * sizeof(a) - 1 && (k = (a >> i) & 1) == 0; ++i);
p = (a >> (8 * sizeof(a) - 1)) & 1;
return (1 - 2 * p) * k;
Правда, не тестировал.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 28.12.2013 в 22:56.
BDA вне форума Ответить с цитированием
Старый 28.12.2013, 23:19   #929
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Не так не пойдет, цикл есть - ветвление без вариантов.
Вот для Integer работает, кроме нуля. Еще бы умножить на что-то, которое 1 если не ноль, ну и 0 соответственно
Код:
not Value shr 31 - Value shr 31
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.12.2013, 23:33   #930
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Не так не пойдет, цикл есть - ветвление без вариантов.
Да, сглупил.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
интересные проги kipish Софт 85 18.12.2022 01:03
Текст на картинках SunLight Microsoft Office Word 2 08.08.2007 12:59