|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
Обмен значениями без третьей переменной
Очень хороший метод нашёлся в просторах Сети:
Код:
var x, y: byte; begin x:=$99; // bin 10011001 y:=$4B; // bin 01001011 x:=x xor y; // 11010010 y:=y xor x; // 10011001 x:=x xor y; // 01001011 end; Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#2
|
||||
|
||||
Что-то мне подсказывает, что свапнуть 3 значение в классическом случае нельзя, т.к. неясно какое значение куда свапать.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
||||
|
||||
А конкретно? 3 переменных: А, B, С, поменять A <-> C, а с переменной B что делать?
Кстати обмен чисел (2 переменных): Код:
var a, b: Integer; begin a := 2; b := 3; a := a+b; b := a-b; // b = 2 a := a-b; // a = 3 ЗЫ решение для паскаля: Код:
WriteLn('Большее число = ', (a+b + abs(a-b))/2:0:0); Помогаю за Спасибо |
#4
|
||||
|
||||
я так понимаю, что A -> B, B -> C, C -> A
XCHG рулит))) добавлено позже Код:
var a, b: Integer; begin a := 2; b := 3; a := a+b; b := a-b; // b = 2 a := a-b; // a = 3 Пишу программы за еду. __________________ Последний раз редактировалось NumLock, 04.09.2011 в 13:33. |
#5
|
||||
|
||||
ну, можно и на xchg сделать
Да, именно Цитата:
Код:
x:=x xor y; y:=y xor x; x:=x xor y; z:=z xor y; y:=y xor z; z:=z xor y; Код:
xchg ax,bx xchg bx,cx Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#6
|
||||
|
||||
Ну, а если быть совсем точным:
Код:
// x <=> y asm mov eax,y xchg x,eax mov y,eax end; // x <= y <= z asm mov eax,y xchg x,eax xchg z,eax mov y,eax end; // x => y => z asm mov eax,y xchg z,eax xchg x,eax mov y,eax end; Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj Последний раз редактировалось PhoeniX, 04.09.2011 в 13:53. |
#7
|
|||
|
|||
через стек можно. изменяя очередность пушей и попов.
|
#8
|
||||
|
||||
Цитата:
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |