Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.05.2009, 02:45
oiBulldog вне форума Посмотреть профиль Отправить личное сообщение для oiBulldog Найти все сообщения от oiBulldog
  № 1  
Ответить с цитированием
oiBulldog

Регистрация: Jul 2008
Сообщений: 6
По умолчанию Подскажите по неравенствам:)

Объясните пожалуйста, почему в одном случае выдаётся "true", в другом "false", причём это всё как то связано с "1", при замене допустим на "4" или "6" в обоих случая выдаётся "true". Подскажите как происходит обсчёт и как этого избежать, чтобы всё считалось верно?
Код AS1/AS2:
q = 9;
w = 8;
e = 7;
r = 1;
trace(q!=w!=e!=r);
trace(q!=w!=r!=e);


Последний раз редактировалось iNils; 02.05.2009 в 03:04.
Старый 02.05.2009, 03:05
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 2  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
Как избежать - не писать подобных конструкций. Есть скобки, есть && и ||. Не надо лишний раз запутывать компилятор и себя.

Старый 02.05.2009, 03:41
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 3  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Для оформления своего кода надо использовать теги [code][/code]

При неравенстве с единицей, последняя преобразуется в булево значение true, что не происходит с другими числами, они дают false. Есть строгое неравенство !== там такого не будет.
В вашем случаи q!=w это true, true != 7 тоже true, а true != 1, это true != true, что дает false.
Получается:
(true != true) != false, это false != false и результат true
(true != false) != true, это true != true и результат false
__________________
(и)Нильс.ru | Плагины для FlashDevelop


Последний раз редактировалось iNils; 02.05.2009 в 14:06.
Старый 02.05.2009, 13:35
oiBulldog вне форума Посмотреть профиль Отправить личное сообщение для oiBulldog Найти все сообщения от oiBulldog
  № 4  
Ответить с цитированием
oiBulldog

Регистрация: Jul 2008
Сообщений: 6
Ясно, немного разобрался в механизме. Спасибо. Но тогда возникает вот какой вопрос, а как тогда всё таки добиться того, что изначально планировал, как должно выглядеть уровнение, которое выдаёт "false" в том случае если хотя бы "2" из "n" чисел равны и "true" в том случае если все числа отличны друг от друга?

Старый 02.05.2009, 13:49
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 5  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Ну, каждое нужно сравнить с каждым. Это 2 вложенных цикла.

Старый 02.05.2009, 14:25
oiBulldog вне форума Посмотреть профиль Отправить личное сообщение для oiBulldog Найти все сообщения от oiBulldog
  № 6  
Ответить с цитированием
oiBulldog

Регистрация: Jul 2008
Сообщений: 6
Это ясно, то есть без цикла не обойтись?)

Старый 02.05.2009, 14:40
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 7  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Ну в голову пока идея не лезет.
Когда на бумажке смотришь на цифры, ты ведь каждый сравниваешь с каждым, так?

Старый 02.05.2009, 14:45
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 8  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Можно, ручками.
Код AS1/AS2:
trace(q!=w && q!=e && q!=r && w!=e && w!=r && e!=r);
Но смотрите, для 3-х чисел нужно 3 сравнения, для 4-х 6, а для 5 - 10. А если чисел больше?
Но два цикла не надо, хватит одного.
Код AS1/AS2:
var array:Array = [9, 8, 7, 1];
var arrayComparison:Array = [];
var result:Boolean = true;
for (var i:Number = 0; i < array.length; i++) {
	if (arrayComparison[array[i]] == true) {
		result = false;
		break;
	} else {
		arrayComparison[array[i]] = true;
	}
}
trace (result);
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 02.05.2009, 14:58
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Код AS1/AS2:
var array:Array = [9, 8, 7, 1, 5, 4];
var result:Boolean = true;
var index:Number;
 
for (var i:Number = 0; i < array.length; i++) {
	index = array.indexOf(array[i]);
 
	if (index >= 0 && index != i) {
		result = false;
		break;
	}
}
trace (result);

Старый 02.05.2009, 15:00
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 10  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Гениально! Спасибо, никогда бы сам такое не придумал))) Меня только на такое хватило))
Код:
var array:Array = [1, 8, 4, 9];
var arrayCom:Array = array.sort();
var result:Boolean = true;
for (var i:Number = 0; i < arrayCom.length; i++) {
    if (arrayCom[i] == arrayCom[i+1]) {
        result = false;
        break;
    }
}
trace (result);
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 02.05.2009 в 15:07.
Создать новую тему Ответ Часовой пояс GMT +4, время: 17:50.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
исключение дублирования

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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