Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   And or одновременно. (http://www.flasher.ru/forum/showthread.php?t=136852)

in4core 27.02.2010 01:46

And or одновременно.
 
Интересно вдруг стало, а можно ли использовать операторы одновременно, таким образом типа :
Код AS1/AS2:

if(a==b and or b==c) { }

( возможно просто подругому пишется, это пример)

или же в любом случае только так :
Код AS1/AS2:

 if(a==b and  b==c) {}if(a==b or  b==c) {};


mooncar 27.02.2010 01:53

Логика "И" как бы исключает логику "ИЛИ".
"ИЛИ-НЕ" возможно, "И-НЕ" возможно, а вы о чем-то странном говорите.
Как вы себе представляете эту логику?

Это как понимать?
Код AS1/AS2:

if(a==b and  b==c) {} ; 
 if(a==b or  b==c) {};

Я раньше только слышал о так называемом "индусском коде", но теперь вижу его в действии.

djyamato 27.02.2010 02:15

а что описать-то можно такой логикой ?
Ну, пример я имею ввиду приведите :)

mooncar 27.02.2010 02:37

У нас была учительница в школе, у нее замечательная логика была.

" - Марина Сергеевна, на дневник обложка нужна или не надо?
- Да!..."

И все в таком духе.

samana 27.02.2010 02:49

Цитата:

Сообщение от mooncar (Сообщение 889661)
У нас была учительница в школе, у нее замечательная логика была.

" - Марина Сергеевна, на дневник обложка нужна или не надо?
- Да!..."

И все в таком духе.

:taunt:

in4core 27.02.2010 03:35

Нет. все проще. Заказчик попросил сделать для анкеты алгоритм. Так вот, алгоритм не простой, Некоторые логики подразумевают ответы типа - Да на 1 вопрос и нет на все остальные = действие. В этом случае формурется последовательность типа 10000. Тоесть ответ да , дает единичку в моем случае. С этими логиками все просто , но есть еще и нестандартные немного логики типа - если ДА на 1 вопрос и/или да на 2 вопрос + да на 5 вопрос.... и т.п - вот для таких логик приходится писать длинные последовательности логических операторов. Когда вопросов 5 это еще не так напряжно, но если больше то ужасно. Поэтому и спросил насчет БЫСТРОГО применения и/или . Ибо не хочется писать длинные строки))))))) лентяй)

Добавлено через 15 минут
to MoonCar _))
Если ты считаешь что ты настолько умен что бы написать данную строку не на ИНДУССКОМ коде - прошу докажи).... Именно за этим я и создал тему узнать можно ли. Раз можешь то покажи.

Вот алгоритм : Если ДА на 1 вопрос и/или ДА на второй вопрос, + ДА на 5 вопрос + любой другой ответ на все остальные, то ДЕЙСТВИЕ1. П.с. вопросов всего 6.

Моя реализация ( по другому не умею):
строка 1 : 110010 если и
строка 2: 010010 если или1
строка 3: 100010 если или2

Код AS1/AS2:

if(str.substr(0,1)=="0" or str.substr(0,1)=="1" and str.substr(1,1)==str.substr(4,1)=="1"){catch}
if(str.substr(0,1)=="1" and str.substr(1,1)=="0" or str.substr(1,1)==str.substr(4,1)=="1"){catch}


djyamato 27.02.2010 03:51

Цитата:

Сообщение от mooncar (Сообщение 889661)
У нас была учительница в школе, у нее замечательная логика была.

" - Марина Сергеевна, на дневник обложка нужна или не надо?
- Да!..."

И все в таком духе.

А я в танке :( Не понимаю прикола

wvxvw 27.02.2010 04:09

Где-то на govnokod.ru попадался новый булевый оператор - "все равно", записывается так: &|, а его инвариант |&.
Операторы or и and устарели в AS2, правильно использовать || и && соответственно.
Если вам нужно проверить множество условий - самый правильный подход:
Код AS1/AS2:

var condition1:Boolean = true;
var condition2:Boolean = false;
var condition3:Boolean = true;
var condition4:Boolean = false;
var condition5:Boolean = true;
var conditionResult:Number = 0;
if (condition1) conditionResult |= 1;
if (condition2) conditionResult |= 2;
if (condition3) conditionResult |= 4;
if (condition4) conditionResult |= 8;
if (condition5) conditionResult |= 16;
trace(conditionResult.toString(2)); // 10101
var correctResult:Number = 22; // 10110
trace(correctResult.toString(2));
var i:Number = 0;
var k:Number = 1;
while (i++ < 5)
{
        if ((correctResult & k) == (conditionResult & k))
                trace("result " + i + " is correct");
        else trace("result " + i + " is incorrect");
        k <<= 1; // k *= 2;
}


mooncar 27.02.2010 04:10

И / ИЛИ при двух выражениях, дающих false/true - это и есть индусский код. Либо одно должно быть, либо другое.
Логика ИЛИ исключает И, все остальное делается цепочками, если хотите.

Ум здесь не причем. А вот иногда вопрос, выдранный из контекста конкретной задачи, и сформулированный "в воздухе", может выглядеть достаточно.. как бы это помягче сказать, глупо.

VVall 27.02.2010 04:26

OR - достаточно выполнения любой части условия, AND - необходимо выполнение всех частей условия. Совместить это невозможно никак. Это аналогично попытке совместить + и - в одной операции.


Часовой пояс GMT +4, время: 23:56.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.