Форум программистов, компьютерный форум CyberForum.ru

Обмен значениями двух переменных - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.68
Андрей1992
0 / 0 / 1
Регистрация: 13.06.2012
Сообщений: 60
15.09.2013, 18:13     Обмен значениями двух переменных #1
Нашёл на другом форуме занятную формулу обмена значений двух переменных(очевидно на с++):
b = – –a + (a=b)*0;
Проверил на числах 1 и 101, рез 101 и 101. Помогите, было бы круто, формула в одну строку.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2013, 18:13     Обмен значениями двух переменных
Посмотрите здесь:

Обмен переменных string C++
C++ Массивы (ввести данные целого типа, вывести на экран, выполните обмен значениями)
C++ Обмен значениями двух переменных А и В без использования вспомогательной переменной
C++ Программа обмена значениями двух переменных a и b
Обмен между значениями двух переменных, не используя при этом третьей переменной C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Raali
16.09.2013, 18:28     Обмен значениями двух переменных
  #21

Не по теме:

C++
1
 a :=: b;
привет из будущего!

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,056
16.09.2013, 18:30     Обмен значениями двух переменных #22
Цитата Сообщение от Catstail Посмотреть сообщение
так этот способ нечестный:
так скажем не совсем честный
но в упакованных двоично десятичных числах используется
старший полубайт десятки младший единицы
Catstail
Модератор
 Аватар для Catstail
21500 / 10253 / 1669
Регистрация: 12.02.2012
Сообщений: 17,139
16.09.2013, 18:36     Обмен значениями двух переменных #23
Цитата Сообщение от Андрей1992 Посмотреть сообщение
занесём расход памяти в минус этого способа
- дело не в расходе, а в нарушении условия. Здесь неявно используются те же 32 бита, что и в "лобовом" способе с рабочей переменной.

Добавлено через 1 минуту
Цитата Сообщение от Raali Посмотреть сообщение
привет из будущего!
- по-моему, в Ruby это выглядит так: a,b=b,a
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
16.09.2013, 18:37     Обмен значениями двух переменных #24
Цитата Сообщение от Catstail Посмотреть сообщение
- по-моему, в Ruby это выглядит так: a,b=b,a
я имел в виду
Proposing a C++1Y Swap Operator
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,056
16.09.2013, 18:38     Обмен значениями двух переменных #25
Цитата Сообщение от Catstail Посмотреть сообщение
дело не в расходе, а в нарушении условия. Здесь неявно используются те же 32 бита, что и в "лобовом" способе с рабочей переменной.
стоп
условия не было
было найти способы
Цитата Сообщение от Андрей1992 Посмотреть сообщение
Задали придумать семь способов, 6 уже осилил, нужен седьмой.
этот способ тоже использует старшие разряды
Цитата Сообщение от Андрей1992 Посмотреть сообщение
a=a*10000+b;
b=a / 10000;
a=a % 10000;
только десятичного числа
Андрей1992
0 / 0 / 1
Регистрация: 13.06.2012
Сообщений: 60
16.09.2013, 18:41  [ТС]     Обмен значениями двух переменных #26
Цитата Сообщение от Catstail Посмотреть сообщение
Добавлено через 1 минуту
- по-моему, в Ruby это выглядит так: a,b=b,a
И не только в нём, ещё в питоне также, но мне нужен способ который применим во всех языках (будь то Pascal, C++ или Haskell)
Catstail
Модератор
 Аватар для Catstail
21500 / 10253 / 1669
Регистрация: 12.02.2012
Сообщений: 17,139
16.09.2013, 18:46     Обмен значениями двух переменных #27
Цитата Сообщение от ValeryS Посмотреть сообщение
стоп
условия не было
- ну, как это? Просто поменять местами значения переменных? Как угодно? Тогда вот еще "замечательный" способ: пишешь оба числа в файл, а читаешь "крест накрест"... А можно и в два файла.
Андрей1992
0 / 0 / 1
Регистрация: 13.06.2012
Сообщений: 60
16.09.2013, 18:50  [ТС]     Обмен значениями двух переменных #28
Цитата Сообщение от Catstail Посмотреть сообщение
- ну, как это? Просто поменять местами значения переменных? Как угодно? Тогда вот еще "замечательный" способ: пишешь оба числа в файл, а читаешь "крест накрест"... А можно и в два файла.
Оригинально, может предложите просто вывести их наоборот? Вводим a,b - выводим b,a.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,056
16.09.2013, 18:53     Обмен значениями двух переменных #29
Цитата Сообщение от Catstail Посмотреть сообщение
Тогда вот еще "замечательный" способ: пишешь оба числа в файл, а читаешь "крест накрест"... А можно и в два файла.
ну если нет ограничений на задание то конечно можно
а если файл проецируемый в память то и не так и долго
по моему это не практическое задание, а, так скажем, на развития воображения
следующим шагом наверно будет найти достоинства и недостатки

Не по теме:


кстати про файл я и не подумал зашореность мышления



раз пошла такая пьянка? то через стек
Код
push a;
push b;
pop a;
pop b;
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
16.09.2013, 18:56     Обмен значениями двух переменных #30
Цитата Сообщение от ValeryS Посмотреть сообщение
кстати про файл я и не подумал
можно вывести числа, предложить пользователю самому их поменять и ввести заново,
правда тут недостатков будет много, и зависеть будет от адекватности "девайса", c которым работает программа для вычисления таких сложных операций
Catstail
Модератор
 Аватар для Catstail
21500 / 10253 / 1669
Регистрация: 12.02.2012
Сообщений: 17,139
16.09.2013, 19:05     Обмен значениями двух переменных #31
Цитата Сообщение от ValeryS Посмотреть сообщение
то через стек
- не пойдет, ибо не универсально.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,056
16.09.2013, 19:10     Обмен значениями двух переменных #32
Цитата Сообщение от Catstail Посмотреть сообщение
не пойдет, ибо не универсально.
стек, не как физическая сущность, а как организация хранения данных, по моему реализован на многих языках.
я же не зря тег Code поставил и безликий push, в каждом языке может реализоваться по своему
Catstail
Модератор
 Аватар для Catstail
21500 / 10253 / 1669
Регистрация: 12.02.2012
Сообщений: 17,139
16.09.2013, 19:15     Обмен значениями двух переменных #33
Пускай... Прелесть задачи, на мой взгляд, именно в том, чтобы не использовать доп. переменные. Без этого условия задача становится бесполезной.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
16.09.2013, 19:24     Обмен значениями двух переменных #34
C++
1
a^=b^=a^=b;
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,056
16.09.2013, 19:34     Обмен значениями двух переменных #35
Цитата Сообщение от kravam Посмотреть сообщение
a^=b^=a^=b;
не одно присвоение в строке Неопределенку можно получить
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
17.09.2013, 00:30     Обмен значениями двух переменных #36
Цитата Сообщение от Андрей1992 Посмотреть сообщение
Ничего интересного, обычное извращение с арифметикой.
C++
1
2
3
a=a*10000+b;
b=a / 10000;
a=a % 10000;
auto a = ULLONG_MAX;
auto b = ULLONG_MAX-1;
меняй.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2013, 02:13     Обмен значениями двух переменных
Еще ссылки по теме:

Вывести результат двух операций с использованием двух переменных C++
C++ Определить процедуру, осуществляющую обмен значениями двух переменных
C++ Составить программу обмена значениями трёх переменных

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6172 / 2901 / 284
Регистрация: 04.12.2011
Сообщений: 7,715
Записей в блоге: 3
18.09.2013, 02:13     Обмен значениями двух переменных #37
Чисто синтаксическая перелицовка, но выглядит забавно:
C++
1
2
3
a -= b;
b += a;
a = -(a -= b);
Yandex
Объявления
18.09.2013, 02:13     Обмен значениями двух переменных
Ответ Создать тему
Опции темы

Текущее время: 10:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru