| 
			| 
					
						| 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, 68mov 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, 68mov 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;
 
 Одной строкой!
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Когда ему нужно - он русский, когда нужно - украинец, а когда ему ни хрена не нужно - он ирландец.
 "...Он любил говорить факин щит
 Когда что-то не так ему
 Принимал он свой самый ирландский вид
 И кидался трубкой в жену..."
 |  |  | 
	|  |