Как вычислить abs без использования стандартной функции языка
Как найти модель целого числа без встроенной функции. Меня интересует необычные решение без использования if'а, а такое которое использовало особенности языка
пример оформления:
Python
def abs(n):
return n if n > 0 else -n
Ответы (4 шт):
Автор решения: Harry
→ Ссылка
C, C++
return (a < 0) ? -a : a;
if (a < 0) return -a; else return a;
А вообще задача некорректна - не указано, например, для целых чисел, нет... Например, для int сработает такой хак -
return ((a >>30)|1)*a;
MASM
cmp eax,0
jge label
neg eax
label:
Тряхну стариной :)
Pascal
function abs(a: real): real;
begin
if a < 0 then
abs := -a
else
abs := a;
end;
Автор решения: Trifonov Dmitriy
→ Ссылка
Если говорить о необычных способах,то на c++ можно написать так :)
int abs(int a)
{
string str = to_string(a);
if(str.find('-') != string::npos)
str.erase(str.find('-'), 1);
return std::stoi(str);
}
P.S. конечно можно было просто удалить первый символ, но так не интересно)
Автор решения: Victor VosMottor
→ Ссылка
Python 2.x., 3.x.
def my_own_abs(x):
return x if x > 0 else -x
Python 3.9
def my_own_abs2(x):
return int(str(x).removeprefix('-'))