Страница 1 из 2

Задача по программированию

Добавлено: 18 фев 2003, 18:55
Циник
Написать функцию Ф(х), которая меняет местами 2 и 3, то есть когда ей подаешь х=2, она возвращает 3, и наоборот.

#define f(x) ((x==2)?3:2)

Добавлено: 18 фев 2003, 19:56
Lepsik
так пойдет ? :lol:

XORом его

Добавлено: 18 фев 2003, 20:09
Tania
Мне только сейчас лень думать, как это правильно записать с точки зрения синтаксиса.
Но в принципе должно работать: 10 xor 1 = 11. 11 xor 1 = 10. Вариант хорош тем, что можно не проверять, чему равно введенное число, а тупо xor-ить его с единицей.

А если не 2 и не 3, тогда что?

Добавлено: 18 фев 2003, 20:11
Marmot
???

Тогда выбрасывается исключение, происходит GPF

Добавлено: 18 фев 2003, 20:18
Tania
и компьютер взрываетсявместе со всей локальной сетью.
Мне с вас смешно, товарищи - можно подумать, вы голливудских фильмов с участием компьютеров не смотрели...

Re: Тогда выбрасывается исключение, происходит GPF

Добавлено: 18 фев 2003, 20:22
Marmot
Tania писал(а):и компьютер взрываетсявместе со всей локальной сетью.
Мне с вас смешно, товарищи - можно подумать, вы голливудских фильмов с участием компьютеров не смотрели...
Ндаа, это дело (и компьютер взрывается вместе со всей локальной сетью) надо долго программировать, в функцию может и не поместится... :-)

Добавлено: 18 фев 2003, 20:26
Циник
Лепсику: так не пойдет.

Тане: Мне синтаксис без разницы, можно хоть на пальцах объяснить. Но с ксором тоже не пойдет.

Мармоту: Хороший вопрос - половина ответа.

Опять Тане: Так ты объяснишь или как?

Всем: где полное, окончательное и бесповоротное решение? Не вижу пока.

Не пойдёт так не пойдёт

Добавлено: 18 фев 2003, 20:29
Tania
Моё дело предложить.
Тогда пыхтите сами, а я загляну через полчасика - проверю.
;-)

Re: Задача по программированию

Добавлено: 18 фев 2003, 21:50
Смайл
Циник писал(а):Написать функцию Ф(х), которая меняет местами 2 и 3, то есть когда ей подаешь х=2, она возвращает 3, и наоборот.
А когда и не 2 и не 3 тогда как?

Недетреминистски задачи ставишь, дорогой товарищ.

Поди T-SQL ваяешь?

Re: Задача по программированию

Добавлено: 18 фев 2003, 21:52
папа Карло
Смайл писал(а):Поди T-SQL ваяешь?
за че ты меня так не любишь? :lol:

Re: Задача по программированию

Добавлено: 19 фев 2003, 05:40
Циник
Смайл писал(а):
Циник писал(а):Написать функцию Ф(х), которая меняет местами 2 и 3, то есть когда ей подаешь х=2, она возвращает 3, и наоборот.
А когда и не 2 и не 3 тогда как?

Недетреминистски задачи ставишь, дорогой товарищ.
Так ведь жизнь - она, товарищ Смайл, сугубо недетерминистская. И задачи она ставит обычно такие же. Вот мне как раз и интересно, как население с такими жизненными формулировками справляется, как мыслительный процесс проистекает, каков результат получается.
Поди T-SQL ваяешь?
Спаси и сохрани, старик Бо.

Това-арищ Циник

Добавлено: 19 фев 2003, 06:22
Tania
А в чём, собственно, смысл задачи?
Почему в лоб (свитчем или иф-елс) нельзя?
Надо написать как можно меньшим числом операторов? Или наиболее оптимально? Или этот код должен быть палиндромным и при этом печатать сам себя?

Re: Това-арищ Циник

Добавлено: 19 фев 2003, 07:00
Циник
Tania писал(а):А в чём, собственно, смысл задачи?
Почему в лоб (свитчем или иф-елс) нельзя?
Надо написать как можно меньшим числом операторов? Или наиболее оптимально? Или этот код должен быть палиндромным и при этом печатать сам себя?
Смысл задачи - написать такую функцию (см. выше). Можно просто описать алгоритм. Все. Если это так просто, почему не вижу до сих пор решения? Уже и подсказку дал...

Re: Това-арищ Циник

Добавлено: 19 фев 2003, 07:26
Marmot
1. Превращаешь число в строку
2. Заменяешь 2->3 / 3->2
3. Конвертишь обратно в число

Угадал? :-)

Swap что-ли?

Добавлено: 19 фев 2003, 07:35
fooit
void my_swap(int& x, int& y)
{
x=x-y;
y=x+y;
x=y-x;
}