Большой Воронежский Форум

Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел.
Вернуться   Большой Воронежский Форум » Компьютеры и все, что с ними связано » » Программирование
Философия, технологии, алгоритмы!

Ответ
 
Опции темы
Старый 24.05.2007, 17:43   #1   
Форумец
 
Аватар для fishca
 
Сообщений: 708
Регистрация: 23.12.2002
Возраст: 52
Записей в дневнике: 1

fishca вне форума Не в сети
Поменять местами значения двух переменных

Необходимо поменять местами значения двух переменных, не используя третью переменную.
Умные головы подскажите решение, плиз!
  Ответить с цитированием
Старый 24.05.2007, 17:50   #2   
Форумец
 
Сообщений: 422
Регистрация: 17.03.2006
Возраст: 42

MAlVik вне форума Не в сети
Какой язык? Через указатели пробовал?
  Ответить с цитированием
Старый 24.05.2007, 17:53   #3   
Форумец
 
Аватар для fishca
 
Сообщений: 708
Регистрация: 23.12.2002
Возраст: 52
Записей в дневнике: 1

fishca вне форума Не в сети
Надо без использования указателей Язык любой.
  Ответить с цитированием
Старый 24.05.2007, 17:55   #4   
гангстер
 
Аватар для HepB
 
Сообщений: 5,823
Регистрация: 05.08.2006

HepB вне форума Не в сети
a:=5
b:=3
a:=a+b //8
b:=a-b //5
a:=a-b //3
  Ответить с цитированием
Старый 24.05.2007, 17:56   #5   
Stebanoid
 
Аватар для Dr.PC
 
Сообщений: 1,940
Регистрация: 30.07.2003
Возраст: 40

Dr.PC вне форума Не в сети
на питоне:
a,b = b,a

на всяких попсовых языках это делается так:
a:= a+b;
b:= b-a;
a:=a+b;
b:=-b;

Но тут вазможны варианты с выходом за область лопустимых значений, поэтому лучше использовать оператор XOR вместо +-.
как сделать с xor - сам подумай.
  Ответить с цитированием
Старый 24.05.2007, 17:56   #6   
Форумец
 
Аватар для fishca
 
Сообщений: 708
Регистрация: 23.12.2002
Возраст: 52
Записей в дневнике: 1

fishca вне форума Не в сети
Правильно что не куришь HepB, быстро сообразил! Спасибо!
  Ответить с цитированием
Старый 24.05.2007, 17:58   #7   
Stebanoid
 
Аватар для Dr.PC
 
Сообщений: 1,940
Регистрация: 30.07.2003
Возраст: 40

Dr.PC вне форума Не в сети
во.. нерв даже короче написал
  Ответить с цитированием
Старый 24.05.2007, 18:02   #8   
гангстер
 
Аватар для HepB
 
Сообщений: 5,823
Регистрация: 05.08.2006

HepB вне форума Не в сети
хз...вроде в 9 классе исч0 прошли...
  Ответить с цитированием
Старый 24.05.2007, 18:03   #9   
Stebanoid
 
Аватар для Dr.PC
 
Сообщений: 1,940
Регистрация: 30.07.2003
Возраст: 40

Dr.PC вне форума Не в сети
a= a^b
b= b^a
a= a^b

так вроде.. если не туплю... (^ оператор исключающего или)
  Ответить с цитированием
Старый 24.05.2007, 18:11   #10   
гангстер
 
Аватар для HepB
 
Сообщений: 5,823
Регистрация: 05.08.2006

HepB вне форума Не в сети
Dr.PC, уйсе, эт ч0 за языг?!
  Ответить с цитированием
Старый 24.05.2007, 18:11   #11   
Stebanoid
 
Аватар для Dr.PC
 
Сообщений: 1,940
Регистрация: 30.07.2003
Возраст: 40

Dr.PC вне форума Не в сети
Цитата:
Сообщение от HepB
Dr.PC, уйсе, эт ч0 за языг?!
Какой именно? Питон?
  Ответить с цитированием
Старый 24.05.2007, 18:20   #12   
гангстер
 
Аватар для HepB
 
Сообщений: 5,823
Регистрация: 05.08.2006

HepB вне форума Не в сети
Цитата:
Сообщение от Dr.PC
a= a^b
b= b^a
a= a^b
я тогда не понимаю, как тут работает исключающее или...
  Ответить с цитированием
Старый 24.05.2007, 18:24   #13   
Stebanoid
 
Аватар для Dr.PC
 
Сообщений: 1,940
Регистрация: 30.07.2003
Возраст: 40

Dr.PC вне форума Не в сети
операция побитовая:
если биты операндов одинаковые, то результирующий бит - 0, если биты разные - то 1.
  Ответить с цитированием
Старый 24.05.2007, 18:33   #14   
гангстер
 
Аватар для HepB
 
Сообщений: 5,823
Регистрация: 05.08.2006

HepB вне форума Не в сети
Ну опиши каждый шаг для произвольных чисел
  Ответить с цитированием
Старый 24.05.2007, 18:40   #15   
Stebanoid
 
Аватар для Dr.PC
 
Сообщений: 1,940
Регистрация: 30.07.2003
Возраст: 40

Dr.PC вне форума Не в сети
a b
100111 010110 начальные числа
110001 010110 a= a^b
110001 100111 b= b^a
010110 100111 a= a^b
  Ответить с цитированием
Старый 24.05.2007, 19:58   #16   
Форумец
 
Аватар для fishca
 
Сообщений: 708
Регистрация: 23.12.2002
Возраст: 52
Записей в дневнике: 1

fishca вне форума Не в сети
Настояшые программисты! сначала надо потом , а потом :
  Ответить с цитированием
Старый 24.05.2007, 22:00   #17   
старый хрыч
 
Аватар для X0R
 
Сообщений: 6,334
Регистрация: 17.12.2006
Возраст: 39

X0R вне форума Не в сети
Цитата:
Надо без использования указателей Язык любой
Ну раз язык любой, то вот


mov eax, a
push eax
mov eax, b
mov a, eax
pop eax
mov b, eax
  Ответить с цитированием
Старый 24.05.2007, 22:17   #18   
Stebanoid
 
Аватар для Dr.PC
 
Сообщений: 1,940
Регистрация: 30.07.2003
Возраст: 40

Dr.PC вне форума Не в сети
mov eax, a
mov ebx, b
mov a, ebx
mov b, eax

зачем стэк дёргать?
  Ответить с цитированием
Старый 24.05.2007, 22:24   #19   
on the run
 
Аватар для G.O.D.
 
Сообщений: 1,438
Регистрация: 15.10.2004

G.O.D. вне форума Не в сети
монстры!
  Ответить с цитированием
Старый 25.05.2007, 00:19   #20   
старый хрыч
 
Аватар для X0R
 
Сообщений: 6,334
Регистрация: 17.12.2006
Возраст: 39

X0R вне форума Не в сети
mov eax, a
xchg eax, b
mov a, eax

И в самом деле нах стек дергать...
3 команды нах!
  Ответить с цитированием
Старый 25.05.2007, 13:39   #21   
Форумец
 
Аватар для alex_bas
 
Сообщений: 265
Регистрация: 11.11.2004

alex_bas вне форума Не в сети
на С#

using System;

class Program
{
static void Main()
{
int i = 1;
int j = 2;
i = i + j;
j = i - j;
i = i - j;

}
}
  Ответить с цитированием
Старый 25.05.2007, 15:07   #22   
старый хрыч
 
Аватар для X0R
 
Сообщений: 6,334
Регистрация: 17.12.2006
Возраст: 39

X0R вне форума Не в сети
На галимом бейсике Swap(a, b)
  Ответить с цитированием
Старый 27.05.2007, 18:27   #23   
Форумец
 
Сообщений: 129
Регистрация: 27.03.2007

Vladimix вне форума Не в сети
asm { xchg var1, var2 }

можно ничего в регистры не заносить
  Ответить с цитированием
Старый 27.05.2007, 18:41   #24   
старый хрыч
 
Аватар для X0R
 
Сообщений: 6,334
Регистрация: 17.12.2006
Возраст: 39

X0R вне форума Не в сети
Vladimix,
Вот выдержка из IntelManual
Цитата:
Instruction Description
XCHG AX,r16 Exchange r16 with AX
XCHG r16,AXExchange AX with r16
XCHG EAX,r32 Exchange r32 with EAX
XCHG r32,EAXExchange EAX with r32
XCHG r/m8,r8 Exchange r8 (byte register) with byte from r/m8
XCHG r8,r/m8 Exchange byte from r/m8 with r8 (byte register)
XCHG r/m16,r16 Exchange r16 with word from r/m16
XCHG r16,r/m16 Exchange word from r/m16 with r16
XCHG r/m32,r32 Exchange r32 with doubleword from r/m32
XCHG r32,r/m32 Exchange doubleword from r/m32 with r32
Как видишь, как минимум один из операндов должен находиться в регистре. Я не могу вспомнить есть ли вообще команды которые в качестве двух операндов могут принимать значения в виде памяти. Я сомневаюсь что такие вообще есть...
  Ответить с цитированием
Старый 27.05.2007, 19:02   #25   
Stebanoid
 
Аватар для Dr.PC
 
Сообщений: 1,940
Регистрация: 30.07.2003
Возраст: 40

Dr.PC вне форума Не в сети
я такого тоже не видел
  Ответить с цитированием
Старый 31.05.2007, 14:44   #26   
Форумец
 
Сообщений: 5
Регистрация: 27.04.2007
Возраст: 41

Sb вне форума Не в сети
на Java:

i = (j ^= i ^= j) ^ i;
  Ответить с цитированием
Старый 31.05.2007, 19:20   #27   
Stebanoid
 
Аватар для Dr.PC
 
Сообщений: 1,940
Регистрация: 30.07.2003
Возраст: 40

Dr.PC вне форума Не в сети
уши бы поотбивал за такой код...
  Ответить с цитированием
Старый 01.06.2007, 12:14   #28   
Форумец
 
Аватар для fishca
 
Сообщений: 708
Регистрация: 23.12.2002
Возраст: 52
Записей в дневнике: 1

fishca вне форума Не в сети
Dr.PC, чем тебе не по нраву такой код?
  Ответить с цитированием
Старый 01.06.2007, 12:35   #29   
Stebanoid
 
Аватар для Dr.PC
 
Сообщений: 1,940
Регистрация: 30.07.2003
Возраст: 40

Dr.PC вне форума Не в сети
Цитата:
Сообщение от fishca
Dr.PC, чем тебе не по нраву такой код?
тем что он хреново читается.
Нахрена мутить? Понты?
  Ответить с цитированием
Старый 01.06.2007, 22:29   #30   
Форумец
 
Сообщений: 129
Регистрация: 27.03.2007

Vladimix вне форума Не в сети
Дак...конечно, понты, зачем, спрашивается, нормальному человеку понадобится менять значения переменных без участия третьей??
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind