amolapatil88 Ответов: 6

c программа подкачки


Как поменять местами два числа, не используя третью переменную?

Richard MacCutchan

Почему тебя это волнует?

Dylan Morley

- потому что это вопрос к его домашнему заданию?

Yusuf

почему ты сам не можешь решить свою домашнюю работу? Дайте мне 10 долларов, я верну вам 1 доллар. Видите ли, мы обменялись долларами без участия третьей стороны.

6 Ответов

Рейтинг:
48

#realJSOP

Дано:

int a = 1;
int b = 2;

Вы можете сделать это:
a = a + b;
b = a - b;
a = a - b;

или вот это:
b = a ^ b;
a = b ^ a;
b = a ^ b;

или просто использовать std:swap метод.


thatraja

Привет Джон, я только что заменил x & y на a & b в вашем ответе, который вы забыли, но позже я обнаружил, что должен был изменить только переменные a & b на x & y. :-) ура

Рейтинг:
2

krmed

Только один из вышеперечисленных вариантов защитит от переполнения/недотока.

b = a ^ b;
a = b ^ a;
b = a ^ b;


Рейтинг:
2

Sandeep Mewara

Еще один в списке:

// x:4; y:7  
x = x*y;  // 4*7  
y = x/y;  // 28/7 = 4  
x = x/y;  // 28/4 = 7  


Рейтинг:
2

Chuck O'Toole

х исключающее г
г операция "исключающее ИЛИ" х
х исключающее г

(XOR == Exclusive или для тех, кто не знаком с кодом сборки PDP-10 :))

Это упражнение для студента, чтобы написать, чем на своем любимом языке, или C++, или Java, или любые другие языковые теги, которые вы хотите добавить к этому вопросу.


Рейтинг:
0

The Doer

//зачем идти на три строки кода, когда у меня есть однострочный код

//int a=20;b=10

b=(a+b)-(a=b);


Рейтинг:
0

Pradeep yaduvanshy

Дорогая это так Симпл используй этот код

а=а+в;
b=a-b;
a=a-b;


это лучший способ обмена......
без использования временной переменной.