Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
ts-alan
8 / 8 / 1
Регистрация: 12.11.2012
Сообщений: 407
1

Задачка на собеседовании

11.09.2014, 09:46. Просмотров 705. Ответов 19
Метки нет (Все метки)

Дали задачку на собеседовании.A,B-булевские переменные. Есть выражение A?B:!B нужно переписать вроде не используя условный оператор If.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2014, 09:46
Ответы с готовыми решениями:

Задача на логическое мышление на собеседовании
Имеется несколько классов. В каждом классе есть функция, внутри которой имеется...

Вопросы по MS SQL на собеседовании .net junior
Доброго времени суток, друзья. В ходе подготовки к собеседованию в одну...

Какие вопросы надо задать на собеседовании?
Собственно наверно странный вопрос, но.... Какие вопросы надо задать на...

Какие вопросы могут задать на собеседовании по C# для начинающего программиста
Подскажите пожалуиста, какие вопросы могут задать на собеседовании по C# для...

Задачка на c#
Дано натуральное число n. Требуется выяснить, можно ли представить его в виде...

19
Egor.S
115 / 109 / 50
Регистрация: 02.10.2011
Сообщений: 528
11.09.2014, 09:53 2
Цитата Сообщение от ts-alan Посмотреть сообщение
нужно переписать вроде
непонятно.
0
BroDIK
86 / 86 / 51
Регистрация: 19.06.2013
Сообщений: 323
11.09.2014, 09:58 3
Может быть, это XOR?
C#
1
A = A ^ B; // Исключающее "ИЛИ"
0
Learx
1046 / 853 / 194
Регистрация: 31.03.2010
Сообщений: 2,488
11.09.2014, 10:17 4
ts-alan, составляем таблицу истинности и формируем логическое выражение.
0
fidgi
64 / 64 / 16
Регистрация: 07.04.2014
Сообщений: 332
11.09.2014, 10:24 5
Если все выражения в тернарном операторе bool типа, то такой оператор может заменить собой условное выражение в цикле или в if.

C#
1
2
3
4
5
6
7
switch(A)
 case true:
    B;
    break;
 case false;
    !B;
    break;


А вообще я без студии, так что врят ли это работает. Да и вообще switch кажется только с целочисленными, перечислениями и строками работает.
0
freeba
Неадекват
1269 / 1067 / 204
Регистрация: 02.04.2010
Сообщений: 2,455
Записей в блоге: 2
Завершенные тесты: 2
11.09.2014, 10:38 6
А что сложного? Обычный тернарный оператор.
C#
1
2
3
4
5
6
7
8
9
switch(A)
{
 case true:
    B;
    break;
 case false:
    !B;
    break;
}
Добавлено через 3 минуты
Цитата Сообщение от fidgi Посмотреть сообщение
switch кажется только с целочисленными, перечислениями и строками работает.
switch со всем работает, даже с объектами
0
fidgi
64 / 64 / 16
Регистрация: 07.04.2014
Сообщений: 332
11.09.2014, 10:50 7
Цитата Сообщение от freeba Посмотреть сообщение
switch со всем работает, даже с объектами
Да и пусть. Главное я бы решил эту задачу
0
Learx
1046 / 853 / 194
Регистрация: 31.03.2010
Сообщений: 2,488
11.09.2014, 11:09 8
Лучший ответ Сообщение было отмечено Ev_Hyper как решение

Решение

fidgi, скорее тут задача не на знание оператора swtch, а на знане булевой алгебры.
таблица истинности выражения:
А В А?В:!В
0 0 1
0 1 0
1 0 0
1 1 1

это соотвествует экввалентности
то есть без тернарного оператора и без if это выражение будет
C#
1
(!А||B)&&(A||!B)
или через xor:
C#
1
!(A^B)
2
Ev_Hyper
Заблокирован
11.09.2014, 11:36 9
Learx, скорее уж тогда на знание логических операций. Составить таблицу не сложно, а вот вспомнить что она означает...
0
Learx
1046 / 853 / 194
Регистрация: 31.03.2010
Сообщений: 2,488
11.09.2014, 11:42 10
Ev_Hyper, так составить формулу можно и без знания названия функции. ну а такие функции как И(AND &&), ИЛИ(OR ||), И-НЕ, ИЛИ-НЕ и исключающее ИЛИ(XOR ^) надо знать на зубок.
0
BroDIK
86 / 86 / 51
Регистрация: 19.06.2013
Сообщений: 323
11.09.2014, 12:09 11
Я же говорил XOR
0
Learx
1046 / 853 / 194
Регистрация: 31.03.2010
Сообщений: 2,488
11.09.2014, 12:11 12
BroDIK, XOR тут не подходит, тут другая функция. можно получить нужную применив отрицание к XOR
0
kolorotur
Эксперт .NET
10617 / 8798 / 2195
Регистрация: 17.09.2011
Сообщений: 15,073
Завершенные тесты: 1
11.09.2014, 13:51 13
Лучший ответ Сообщение было отмечено kolorotur как решение

Решение

Из таблицы, представленной товарищем Learx видно, что результат истин только тогда, когда значения истинности обеих переменных совпадают.
Поэтому:
C#
1
bool result = (A == B);
3
fidgi
64 / 64 / 16
Регистрация: 07.04.2014
Сообщений: 332
11.09.2014, 14:39 14
Цитата Сообщение от kolorotur Посмотреть сообщение
когда значения истинности обеих переменных совпадают.
Насколько я понял, в оригинальной постановке задачи
C#
1
A?B:!B
при A==true, B может быть == false. а !B==true
0
Learx
1046 / 853 / 194
Регистрация: 31.03.2010
Сообщений: 2,488
11.09.2014, 14:41 15
kolorotur, точно ... вот так всегда в простом видишь сложное.
0
fidgi
64 / 64 / 16
Регистрация: 07.04.2014
Сообщений: 332
11.09.2014, 14:43 16
Может я чего то не понимаю, но в тернарном операторе проверяется истинно ли выражение. Если A истинно, то ответ B которое может быть false например.
0
Learx
1046 / 853 / 194
Регистрация: 31.03.2010
Сообщений: 2,488
11.09.2014, 15:10 17
fidgi, условие звучит так: если А истинно, то получаем значение В,если ложно, то получаем значение противоположное В.
0
fidgi
64 / 64 / 16
Регистрация: 07.04.2014
Сообщений: 332
11.09.2014, 15:17 18
Learx, так я это и написал. Но B то может быть ложно, а !B наоборот истинно.
а это противоречит
C#
1
bool result = (A == B);
0
kolorotur
Эксперт .NET
10617 / 8798 / 2195
Регистрация: 17.09.2011
Сообщений: 15,073
Завершенные тесты: 1
11.09.2014, 15:26 19
Цитата Сообщение от fidgi Посмотреть сообщение
при A==true, B может быть == false. а !B==true
Ну да, если А == true, a B == false, то A == B == false == B, верно?
А если А == true, B == true, то A == B == true == снова В.
Если А == false, B == true, то A == B == false == !B
Если A == false, B == false, то A == B == true == опять !B


Цитата Сообщение от fidgi Посмотреть сообщение
а это противоречит
Как видите, никакого противоречия.
0
fidgi
64 / 64 / 16
Регистрация: 07.04.2014
Сообщений: 332
11.09.2014, 15:42 20
Цитата Сообщение от kolorotur Посмотреть сообщение
Как видите, никакого противоречия.
kolorotur, Вы гений.
Теперь я вспомнил, что где-то в книге такое видел. Но только что минуты две втыкал, чтобы понять. Наверно я тупой
0
11.09.2014, 15:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2014, 15:42

Задачка на ветвления
Помогите написать программку, кто откликнется, большое спасибо:friends: ...

Задачка о 12 шарах
Помогите задачку решить)) Условия: Есть 12 шаров, 11 одинаковых, 12-й либо...

Маленькая задачка на C#
Помогите решить) Кода много не должно быть.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru