Нашел задание: даны 2 числа, напечатать сначала большее, потом меньшее, при этом не используя нигде операции сравнения. Не могу сделать т.к. все равно прихожу к сравнению. Помогите пожалуйста.
volvo
6.12.2007 23:38
Спойлер(Показать/Скрыть)
var a, b: integer; min, max: integer; begin a := 17; b := 12; min := (a + b - abs(a - b)) div 2; max := (a + b) - min; writeln(max:4, min:4); end.
По-моему, уже кто-то спрашивал, как такое сделать...
Client
6.12.2007 23:46
ух.. Нереально быстро ты меня спас Не перестаю удивляться volvo +1
Michael_Rybak
6.12.2007 23:47
У меня есть еще более хитрое задание. Сравнить два числа, не прибегая к операциям сравнения.
P.S. Это невозможно.
Добавлено через 2 мин. Хотя... Если в коде volvo заменить abs на квадратный корень из квадрата аргумента, тогда пожалуй, пожалуй
мисс_граффити
7.12.2007 2:01
я спрашивала. года 2 назад...
Client
7.12.2007 20:57
Michael_Rybak а знак равно (=) тоже нельзя использовать?
Michael_Rybak
7.12.2007 21:30
Ну это тебе виднее.
Конечно нельзя.
Client
7.12.2007 21:48
Я про твоё задание. Просто напиши что MAX больше MIN мисс_граффити а кто помог?
Michael_Rybak
8.12.2007 7:16
Мое задание - это типа такой сарказм был беззлобный. Дело в том, что у тебя в условии сказано - вывести сначала большее, а потом меньшее, не применяя сравнения. Это то же самое, что сравнить, не применяя сравнения. Хотя, как оказалось, сравнить, не применяя сравнения, таки можно.
Client
8.12.2007 10:27
Цитата
Хотя, как оказалось, сравнить, не применяя сравнения, таки можно.
Если ты сделал, то можешь выложить код?
Malice
8.12.2007 14:28
Цитата(Michael_Rybak @ 8.12.2007 3:16)
Это то же самое, что сравнить, не применяя сравнения ( т.е. это сделано ). Хотя, как оказалось, сравнить, не применяя сравнения, таки можно (но ведь сделано же...)
Вообще не понял что ты задумал.. В коде Volvo можно же сделать writeln(max:4, ' ,больше ',min:4); Или чтоб числа местами не менялить ? Показывай короче
Michael_Rybak
8.12.2007 16:23
Да, Malice, в том то и дело, что можно.
Так, давайте всё порядку.
В коде volvo используется функция abs, которая неявно использует сравнение. НО. Ее можно заменить на sqrt(x * x), и тут уже сравнения нет, а результат тот же (если, конечно, считать эти операции атомарными).
Поэтому решение volvo можно считать правильным, по большому счету.
А я думал что нельзя. Потому ехидно написал что лучше сразу давайте сравним без сравнения.
Канэц.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.