vimmax
Модератор
Декан
Карма: +42/-3
Offline
Пол: Награды:
Сообщений: 1713
♪♪ ♫ ♪♪ ♫ ♪♪ ♫ ♪♪
|
|
« : Февраль 12, 2007, 04:44:45 » |
|
Задача №2: Необходимо поменять значения двух целочисленных переменных местами, т.е. например: было А=68 и В=34, надо А=34 и В=68.
Условие: нельзя использовать третью переменную. Писать можно на любом языке программирования.
|
|
« Последнее редактирование: Февраль 22, 2007, 08:33:49 от vimmax »
|
Записан
|
♪♪ ♫ LET FOREVER BE ♫ ♪♪ ♫ ♪♪ ♪♪ ♫
|
|
|
BODROV
Mодератор
Доцент
Карма: +37/-1
Offline
Пол:
Сообщений: 550
хде я?
|
|
« Ответ #1 : Февраль 12, 2007, 04:51:28 » |
|
mov ax, 68 mov bx, 34 push ax mov ax, bx pop bx
|
|
|
Записан
|
|
|
|
EvilMax
Администратор
Завкаф
Карма: +59/-0
Offline
Пол:
Сообщений: 1072
Злой и страшный :)
|
|
« Ответ #2 : Февраль 12, 2007, 04:56:50 » |
|
Plain C:
a = a ^ b; b = b ^ a; a = a ^ b;
|
|
|
Записан
|
Оптимальная концентрация кофе - это когда код уже дает советы, как его написать, но еще не спорит с тобой и не подкалывает в случае неудач... --- Существует три способа распространения программного обеспечения: воровство, грабёж и обмен краденым. (c) Неизвестный программист
|
|
|
EvilMax
Администратор
Завкаф
Карма: +59/-0
Offline
Пол:
Сообщений: 1072
Злой и страшный :)
|
|
« Ответ #3 : Февраль 12, 2007, 05:00:26 » |
|
mov ax, 68 mov bx, 34 push ax mov ax, bx pop bx
Стек - это тоже дополнительная ячейка. Боюсь, не пойдет такое решение.
|
|
|
Записан
|
Оптимальная концентрация кофе - это когда код уже дает советы, как его написать, но еще не спорит с тобой и не подкалывает в случае неудач... --- Существует три способа распространения программного обеспечения: воровство, грабёж и обмен краденым. (c) Неизвестный программист
|
|
|
grimgav
↑ так меня зовут, а это я говорю →
Просто гламурный
Проректор
Карма: +161/-17
Offline
Пол: Награды:
Сообщений: 4636
не ^i^
|
|
« Ответ #4 : Февраль 12, 2007, 05:01:49 » |
|
a = a + b; b = a - b; a = a - b;
|
|
|
Записан
|
· Я русский ·
|
|
|
EvilMax
Администратор
Завкаф
Карма: +59/-0
Offline
Пол:
Сообщений: 1072
Злой и страшный :)
|
|
« Ответ #5 : Февраль 12, 2007, 05:03:41 » |
|
a = a + b; b = a - b; a = a - b;
Есть аналогичный вариант с умножением и делением. Но у этих вариантов есть одно "НО" - возможность переполнения. А, впрочем, подождем ответа автора.
|
|
|
Записан
|
Оптимальная концентрация кофе - это когда код уже дает советы, как его написать, но еще не спорит с тобой и не подкалывает в случае неудач... --- Существует три способа распространения программного обеспечения: воровство, грабёж и обмен краденым. (c) Неизвестный программист
|
|
|
grimgav
↑ так меня зовут, а это я говорю →
Просто гламурный
Проректор
Карма: +161/-17
Offline
Пол: Награды:
Сообщений: 4636
не ^i^
|
|
« Ответ #6 : Февраль 12, 2007, 05:05:21 » |
|
Есть аналогичный вариант с умножением и делением. Но у этих вариантов есть одно "НО" - возможность переполнения. А, впрочем, подождем ответа автора.
Настолько глубоко не рыл =/ Может опять прикол в побитовых операциях ?)
|
|
|
Записан
|
· Я русский ·
|
|
|
grimgav
↑ так меня зовут, а это я говорю →
Просто гламурный
Проректор
Карма: +161/-17
Offline
Пол: Награды:
Сообщений: 4636
не ^i^
|
|
« Ответ #7 : Февраль 12, 2007, 05:07:52 » |
|
Plain C:
a = a ^ b; b = b ^ a; a = a ^ b;
Да, так и есть =)
|
|
|
Записан
|
· Я русский ·
|
|
|
vimmax
Модератор
Декан
Карма: +42/-3
Offline
Пол: Награды:
Сообщений: 1713
♪♪ ♫ ♪♪ ♫ ♪♪ ♫ ♪♪
|
|
« Ответ #8 : Февраль 12, 2007, 05:08:09 » |
|
BODROV - Ответ #1 Респект программистам на ассемблере! Только чем отличается использование ячейки стека на ассемблере от использования третьей переменной? В решении данной задачи не используются сторонние ячейки памяти, переменные или буферы обмена. grimgav - Ответ #4 Правильно заметили по поводу переполнения. EvilMax - Ответ #2 Вот это правильный ответ. EvilMax +1. Если так дальше пойдет, то все мои задачи за месяц закончатся
|
|
|
Записан
|
♪♪ ♫ LET FOREVER BE ♫ ♪♪ ♫ ♪♪ ♪♪ ♫
|
|
|
Sochin
Злой модератор
Декан
Карма: +108/-6
Offline
Пол:
Сообщений: 1518
|
|
« Ответ #9 : Февраль 12, 2007, 05:29:16 » |
|
Sochin - а что для тебя есть "проектов достаточно большого размера и сложности" ? Например проект из 231 исходника для гигабитного маршрутизатора MARVELL серии ExMxPm является достаточно большим и сложным? (кстати, он еще в продажу не поступил)
Как я могу что-то комментировать то чего не видел и если собственно непонятно о каком проекте речь? Предлагаю не начинать меряться письками. )) Достаточно сложный проект - это проект, все нюансы реализации и устройства которого одновременно удержать в голове нельзя или очень затруднительно. Полагаю, 231 сколько-нибудь сложный модуль - это достаточно сложный проект. Декомпозиция на модули, структурный подход, ООП - все это методы борьбы со сложностью. Если функции и методы классов предлагают контроль типов, то дефайн-макросы - это простая тупая подстановка текста без каких бы то ни было проверок. ыыы. предлагаю такой дефайн для экспериментов:Хорошо если при ошибочном использовании программа не откомпилится и можно найти ошибку в коде. А если программа компилится с ошибочным использованием макроподстановки? Вот тебе уязвимости, вот тебе глюки. Если же проект содержит множество дефайнов, в том числе и нетривиальные макроподстановки, при этом проект развивается, обслуживается и обслуживается командой разработчиков, то вероятность ошибок от неправильного использования дефайнов будет возрастать. Так что думайте и выбирайте сами. ) З.Ы. Если не ошибаюсь, то изначально дефайны были введены в С для работы с константами, а макроподстановки и эмуляция inline-функций уже потом притянули за уши. Вот для констант еще сгодятся дефайны, сложные макросы - фтопку! Я думаю ты бы не обрадовался если бы маршрутизатор твоей сети работал на 5% медленнее, чем сейчас Честно говоря, в данный момент я сомневаюсь что ощутил бы жти 5%. ))) Хотя, конечно же, это еще не показатель. )
|
|
|
Записан
|
Говорят, когда компьютер сгорает, перед взором микропроцессора за долю секунды проносятся все операции, которые он когда-либо совершил... 壯鎭
|
|
|
vimmax
Модератор
Декан
Карма: +42/-3
Offline
Пол: Награды:
Сообщений: 1713
♪♪ ♫ ♪♪ ♫ ♪♪ ♫ ♪♪
|
|
« Ответ #10 : Февраль 12, 2007, 05:32:12 » |
|
Не будем меряться письками. Я твой ответ прочитал. Отвечать не буду. ))))
|
|
|
Записан
|
♪♪ ♫ LET FOREVER BE ♫ ♪♪ ♫ ♪♪ ♪♪ ♫
|
|
|
BODROV
Mодератор
Доцент
Карма: +37/-1
Offline
Пол:
Сообщений: 550
хде я?
|
|
« Ответ #11 : Февраль 12, 2007, 05:58:37 » |
|
вобщем, vimmax, молодца! пиши исчоВ душе моей огонь горит прекрасный, Его зажгли Вы - автор слов бесценных. Перо в руке, чернила, шарф атласный... Пишите дальше, радуйте нас бренных.
|
|
|
Записан
|
|
|
|
BODROV
Mодератор
Доцент
Карма: +37/-1
Offline
Пол:
Сообщений: 550
хде я?
|
|
« Ответ #12 : Февраль 14, 2007, 03:37:46 » |
|
а где продолжение? :'(
|
|
|
Записан
|
|
|
|
vimmax
Модератор
Декан
Карма: +42/-3
Offline
Пол: Награды:
Сообщений: 1713
♪♪ ♫ ♪♪ ♫ ♪♪ ♫ ♪♪
|
|
« Ответ #13 : Февраль 14, 2007, 03:40:27 » |
|
Я ж не могу новые вопросы задавать, пока есть еще неотвеченные топики ("Творческое и аналитическое мышление" (задача 1))...... Или можно? Кто как думает? Задачи у меня есть)))))
|
|
|
Записан
|
♪♪ ♫ LET FOREVER BE ♫ ♪♪ ♫ ♪♪ ♪♪ ♫
|
|
|
BODROV
Mодератор
Доцент
Карма: +37/-1
Offline
Пол:
Сообщений: 550
хде я?
|
|
« Ответ #14 : Февраль 14, 2007, 03:49:27 » |
|
я думаю можно! это ж разные темы... тем более, что Sochin задал сложноватый и непонятный вопрос - никто не хочет отвечать.... а я знаю ответ;)
|
|
|
Записан
|
|
|
|
Sochin
Злой модератор
Декан
Карма: +108/-6
Offline
Пол:
Сообщений: 1518
|
|
« Ответ #15 : Февраль 14, 2007, 04:28:12 » |
|
я думаю можно! это ж разные темы... тем более, что Sochin задал сложноватый и непонятный вопрос - никто не хочет отвечать.... а я знаю ответ;)
ха-ха. У меня тоже задач такого плана еще есть с дюжину. ))
|
|
|
Записан
|
Говорят, когда компьютер сгорает, перед взором микропроцессора за долю секунды проносятся все операции, которые он когда-либо совершил... 壯鎭
|
|
|
LazarusLong
Ирландский доброволец
Проректор
Карма: +181/-7
Offline
Пол: Награды:
Сообщений: 6134
Ukrainian by birth, Irish by the grace of God
|
|
« Ответ #16 : Февраль 17, 2007, 12:31:45 » |
|
Как то мне однажды мне эту задачу загадали на проработке по компьютерным сетям. Минут за 15 решил в уме
|
|
|
Записан
|
Когда ему нужно - он русский, когда нужно - украинец, а когда ему ни хрена не нужно - он ирландец.
"...Он любил говорить факин щит Когда что-то не так ему Принимал он свой самый ирландский вид И кидался трубкой в жену..."
|
|
|
LazarusLong
Ирландский доброволец
Проректор
Карма: +181/-7
Offline
Пол: Награды:
Сообщений: 6134
Ukrainian by birth, Irish by the grace of God
|
|
« Ответ #17 : Март 11, 2007, 10:52:26 » |
|
Вот еще один вариант, кстати:
x ^= y ^= x ^=y;
Одной строкой!
|
|
|
Записан
|
Когда ему нужно - он русский, когда нужно - украинец, а когда ему ни хрена не нужно - он ирландец.
"...Он любил говорить факин щит Когда что-то не так ему Принимал он свой самый ирландский вид И кидался трубкой в жену..."
|
|
|
|