Страница 1 из 2
Задача по программированию
Добавлено: 18 фев 2003, 18:55
Циник
Написать функцию Ф(х), которая меняет местами 2 и 3, то есть когда ей подаешь х=2, она возвращает 3, и наоборот.
#define f(x) ((x==2)?3:2)
Добавлено: 18 фев 2003, 19:56
Lepsik
так пойдет ?

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 ваяешь?
за че ты меня так не любишь?

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;
}