Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/65: Рейтинг темы: голосов - 65, средняя оценка - 4.62
0 / 0 / 1
Регистрация: 13.06.2012
Сообщений: 60
1

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

15.09.2013, 18:13. Показов 12776. Ответов 36
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нашёл на другом форуме занятную формулу обмена значений двух переменных(очевидно на с++):
b = – –a + (a=b)*0;
Проверил на числах 1 и 101, рез 101 и 101. Помогите, было бы круто, формула в одну строку.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.09.2013, 18:13
Ответы с готовыми решениями:

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

Обмен значениями двух переменных А и В без использования вспомогательной переменной
Сконструировать алгоритм обмена значениями двух переменных А и В без использования вспомогательной...

Выполнить обмен значениями двух переменных используя указатели на эти переменные
Выполнить обмен значениями двух переменных используя указатели на эти переменные.

Обмен между значениями двух переменных, не используя при этом третьей переменной
Подскажите как написать программу, которая производит обмен между значениями двух переменных, не...

36
Raali
16.09.2013, 18:28     Обмен значениями двух переменных
  #21

Не по теме:

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

1
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
16.09.2013, 18:30 22
Цитата Сообщение от Catstail Посмотреть сообщение
так этот способ нечестный:
так скажем не совсем честный
но в упакованных двоично десятичных числах используется
старший полубайт десятки младший единицы
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,641
Записей в блоге: 13
16.09.2013, 18:36 23
Цитата Сообщение от Андрей1992 Посмотреть сообщение
занесём расход памяти в минус этого способа
- дело не в расходе, а в нарушении условия. Здесь неявно используются те же 32 бита, что и в "лобовом" способе с рабочей переменной.

Добавлено через 1 минуту
Цитата Сообщение от Raali Посмотреть сообщение
привет из будущего!
- по-моему, в Ruby это выглядит так: a,b=b,a
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
16.09.2013, 18:37 24
Цитата Сообщение от Catstail Посмотреть сообщение
- по-моему, в Ruby это выглядит так: a,b=b,a
я имел в виду
Proposing a C++1Y Swap Operator
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
16.09.2013, 18:38 25
Цитата Сообщение от Catstail Посмотреть сообщение
дело не в расходе, а в нарушении условия. Здесь неявно используются те же 32 бита, что и в "лобовом" способе с рабочей переменной.
стоп
условия не было
было найти способы
Цитата Сообщение от Андрей1992 Посмотреть сообщение
Задали придумать семь способов, 6 уже осилил, нужен седьмой.
этот способ тоже использует старшие разряды
Цитата Сообщение от Андрей1992 Посмотреть сообщение
a=a*10000+b;
b=a / 10000;
a=a % 10000;
только десятичного числа
0
0 / 0 / 1
Регистрация: 13.06.2012
Сообщений: 60
16.09.2013, 18:41  [ТС] 26
Цитата Сообщение от Catstail Посмотреть сообщение
Добавлено через 1 минуту
- по-моему, в Ruby это выглядит так: a,b=b,a
И не только в нём, ещё в питоне также, но мне нужен способ который применим во всех языках (будь то Pascal, C++ или Haskell)
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,641
Записей в блоге: 13
16.09.2013, 18:46 27
Цитата Сообщение от ValeryS Посмотреть сообщение
стоп
условия не было
- ну, как это? Просто поменять местами значения переменных? Как угодно? Тогда вот еще "замечательный" способ: пишешь оба числа в файл, а читаешь "крест накрест"... А можно и в два файла.
0
0 / 0 / 1
Регистрация: 13.06.2012
Сообщений: 60
16.09.2013, 18:50  [ТС] 28
Цитата Сообщение от Catstail Посмотреть сообщение
- ну, как это? Просто поменять местами значения переменных? Как угодно? Тогда вот еще "замечательный" способ: пишешь оба числа в файл, а читаешь "крест накрест"... А можно и в два файла.
Оригинально, может предложите просто вывести их наоборот? Вводим a,b - выводим b,a.
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
16.09.2013, 18:53 29
Цитата Сообщение от Catstail Посмотреть сообщение
Тогда вот еще "замечательный" способ: пишешь оба числа в файл, а читаешь "крест накрест"... А можно и в два файла.
ну если нет ограничений на задание то конечно можно
а если файл проецируемый в память то и не так и долго
по моему это не практическое задание, а, так скажем, на развития воображения
следующим шагом наверно будет найти достоинства и недостатки

Не по теме:


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



раз пошла такая пьянка? то через стек
Код
push a;
push b;
pop a;
pop b;
1
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
16.09.2013, 18:56 30
Цитата Сообщение от ValeryS Посмотреть сообщение
кстати про файл я и не подумал
можно вывести числа, предложить пользователю самому их поменять и ввести заново,
правда тут недостатков будет много, и зависеть будет от адекватности "девайса", c которым работает программа для вычисления таких сложных операций
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,641
Записей в блоге: 13
16.09.2013, 19:05 31
Цитата Сообщение от ValeryS Посмотреть сообщение
то через стек
- не пойдет, ибо не универсально.
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
16.09.2013, 19:10 32
Цитата Сообщение от Catstail Посмотреть сообщение
не пойдет, ибо не универсально.
стек, не как физическая сущность, а как организация хранения данных, по моему реализован на многих языках.
я же не зря тег Code поставил и безликий push, в каждом языке может реализоваться по своему
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,641
Записей в блоге: 13
16.09.2013, 19:15 33
Пускай... Прелесть задачи, на мой взгляд, именно в том, чтобы не использовать доп. переменные. Без этого условия задача становится бесполезной.
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
16.09.2013, 19:24 34
C++
1
a^=b^=a^=b;
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
16.09.2013, 19:34 35
Цитата Сообщение от kravam Посмотреть сообщение
a^=b^=a^=b;
не одно присвоение в строке Неопределенку можно получить
0
347 / 292 / 37
Регистрация: 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;
меняй.
0
Комп_Оратор)
Эксперт по математике/физике
8949 / 4703 / 629
Регистрация: 04.12.2011
Сообщений: 13,999
Записей в блоге: 16
18.09.2013, 02:13 37
Чисто синтаксическая перелицовка, но выглядит забавно:
C++
1
2
3
a -= b;
b += a;
a = -(a -= b);
0
18.09.2013, 02:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.09.2013, 02:13
Помогаю со студенческими работами здесь

Обмен значениями двух чисел через указатели и функцию
Должны использоваться аргументы типа ( int * ) Вот код: #include <iostream> void...

Обмен значений двух переменных
Ниже решение задачи (Задана целочисленная последовательность A = (a i), i = 1..n, n <= 100.*...

Программа обмена значениями двух переменных a и b
3.8 Составить программу обмена значениями двух переменных a и b. Разработать два варианта решения...

Обмен значений двух переменных типа char
Не знаю как вообще использовать такой тип как char, сама программа звучит так: Даны значения...


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

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru