Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.09.2014, 09:47   #1
ts-alan
Форумчанин
 
Регистрация: 07.07.2010
Сообщений: 825
Радость Задачка на собеседовании

Дали задачку на собеседовании.A,B-булевские переменные. Есть выражение A?B:!B нужно переписать вроде не используя условный оператор If.
ts-alan вне форума Ответить с цитированием
Старый 11.09.2014, 11:31   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Так оно уже без if
pu4koff вне форума Ответить с цитированием
Старый 11.09.2014, 13:03   #3
cerkonst
Пользователь
 
Аватар для cerkonst
 
Регистрация: 18.01.2011
Сообщений: 19
По умолчанию

По-моему только один вариант осталься без if, это ассемблер:
Код:
01  cmp         dword ptr [ebp-40h],0 
05  sete        al 
08  movzx       eax,al 
0b  mov         dword ptr [ebp-48h],eax 
0e  cmp         dword ptr [ebp-48h],0 
12  jne         18 
14  nop 
15  nop 
16  jmp         25 
18  cmp         dword ptr [ebp-44h],0 
1c  sete        al 
1f  movzx       eax,al 
22  mov         dword ptr [ebp-44h],eax
25  nop
Как то так. Но у меня больше подозрения что вы сами не уверены в вопросе.
___________________________________ _________
Самые гениальные идеи - самые простые.
Помог с ответом нажми на весы.
cerkonst вне форума Ответить с цитированием
Старый 11.09.2014, 13:05   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
переписать вроде не используя условный оператор If.
Цитата:
Так оно уже без if
не используя операций ветвления.
Надо
1. построить таблицу истинности данного выражения
AB -R
00 -1
01 -0
10 -1
11 -0
2. используя булевы операторы(and|or|xor|not) построить выражение реализующее данную таблицу истинности.
Код:
A xor not B
P.S. возможны и другие варианты выражений (см. ДНФ/КНФ).
PP.S. в таблице истинности (для приведенного выражения) ошибка, исправлять не буду и код тоже. алгоритм решения ясен и так.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 11.09.2014 в 13:10.
evg_m вне форума Ответить с цитированием
Старый 11.09.2014, 13:15   #5
cerkonst
Пользователь
 
Аватар для cerkonst
 
Регистрация: 18.01.2011
Сообщений: 19
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
не используя операций ветвления.
Скорее всего вы правы
___________________________________ _________
Самые гениальные идеи - самые простые.
Помог с ответом нажми на весы.
cerkonst вне форума Ответить с цитированием
Старый 11.09.2014, 13:36   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Есть выражение A?B:!B нужно переписать вроде не используя условный оператор If
думаю, что ожидалось разложение оператора в виде логического выражения:
Код:
A & B | !A & !B
Практическое доказательство:
Код:
            bool A, B;

            for (int i = 0; i < 2; i++)
            {
                for (int j = 0; j < 2; j++)
                {
                    A = i == 1;
                    B = j == 1;
                    Console.WriteLine(" A = {0} B = {1} result = {2} test = {3}", A, B, A ? B : !B, A & B | !A & !B);
                }
            }
            Console.ReadKey();
Впрочем, это и так достаточно очевидно...


Добавлено через минуту
я уже опоздал! evg_m правильно всё расписал.

Последний раз редактировалось Serge_Bliznykov; 11.09.2014 в 13:39.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.09.2014, 22:46   #7
mrMeerkat
Следопыт
Форумчанин
 
Аватар для mrMeerkat
 
Регистрация: 26.04.2012
Сообщений: 307
По умолчанию

Цитата:
Сообщение от ts-alan Посмотреть сообщение
A?B:!B нужно переписать вроде не используя условный оператор If.
Это, если я не забыл еще шарп, юсанье обычного тернарного оператора:
C = (A) ? B: !B;
То есть, если условие А выполняется, то С=В, иначе С=!В.
С Баша:Быть ленивым, глупым, жадным, да и просто редкостным гандоном и мудаком по жизни номально, а вот если ты матом ругаешься-то это да, ужасно и достойно общественного порицания.

Последний раз редактировалось mrMeerkat; 12.09.2014 в 22:50. Причина: "!" не там поставил
mrMeerkat вне форума Ответить с цитированием
Старый 13.09.2014, 08:13   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

mrMeerkat, тернарный оператор был задан в задании.
Нужно переписать БЕЗ ветления (т.е. без проверок в любом их виде).
как уже выше сказано, нужно было просто представить функцию в виде логических операндов. Варианты смотри выше (посты #4, #6) .
ещё подсмотрел такой вариант решения:
Код:
  ( A == B)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.09.2014, 10:34   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
( A == B)
Такое вчепятление что мы опять обсуждаем acmp
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.09.2014, 13:03   #10
mrMeerkat
Следопыт
Форумчанин
 
Аватар для mrMeerkat
 
Регистрация: 26.04.2012
Сообщений: 307
По умолчанию

Да, подлый вопрос.

К ТС: в шарпе есть еще оператор "??", ознакомтесь с ним перед следующим собеседованием.
С Баша:Быть ленивым, глупым, жадным, да и просто редкостным гандоном и мудаком по жизни номально, а вот если ты матом ругаешься-то это да, ужасно и достойно общественного порицания.
mrMeerkat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Залача на алгоритмезацию на собеседовании ts-alan C# (си шарп) 7 25.06.2014 15:12
что могут спросить на собеседовании the_deer_one Свободное общение 10 13.10.2013 21:18
Идиотские вопросы на собеседовании ACE Valery Свободное общение 27 21.05.2013 01:43
что спрашивали на собеседовании Arassir Свободное общение 17 16.06.2011 22:11