forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Сравнение массивов (http://forum.boolean.name/showthread.php?t=9110)

Hurrit 09.09.2009 20:31

Сравнение массивов
 
Как можно сравнивать массивы полностью? То есть, у меня есть два массива mapcheck( 4 , 8 ) и mapwin( 4 , 8 ), и мне надо узнать одинаковые ли они? Через цикл у меня не получилось, в справке про это я тоже ничего не нашел. Может кто знает, буду очень благодарен

ABTOMAT 09.09.2009 20:46

Ответ: Сравнение массивов
 
Цитата:

Через цикл у меня не получилось
Значит где-то ошибка. Не вижу причин не сравнить на равенство циклом. Исключение - дробные переменные, их на равенство сравнивать вообще никогда нельзя. (только с погрешностию)

Hurrit 09.09.2009 22:38

Ответ: Сравнение массивов
 
Через цикл у меня получается сравнивать только отдельные ячейки, а мне нужно проверить весь массив целиком, как будто это обычная переменная. Никак не могу догнать как это сделать

MiXaeL 09.09.2009 22:45

Ответ: Сравнение массивов
 
Код:


win=true
For i=0 to 3
For j=0 to 7
If mapcheck(i,j)<>mapwin(i,j) win=False : goto l
Next
Next
.l

За goto просьба не пинать - я не знаю как без лишних флагов сделать выход из двойного цикла. Конечно, тут не критичен сам выход, но если массивы большие, то может понадобиться для оптимизации.

EvilChaotic 09.09.2009 23:12

Ответ: Сравнение массивов
 
Цитата:

Сообщение от MiXaeL (Сообщение 118102)
Код:


win=true
For i=0 to 3
For j=0 to 7
If mapcheck(i,j)<>mapwin(i,j) win=False : goto l
Next
Next
.l

За goto просьба не пинать - я не знаю как без лишних флагов сделать выход из двойного цикла. Конечно, тут не критичен сам выход, но если массивы большие, то может понадобиться для оптимизации.

Exit....
Exit....У меня вродь работает = )
Ну или если в функции то можно Return = )

Knightmare 09.09.2009 23:49

Ответ: Сравнение массивов
 
Цитата:

Сообщение от MiXaeL (Сообщение 118102)
Код:


win=true
For i=0 to 3
For j=0 to 7
If mapcheck(i,j)<>mapwin(i,j) win=False : goto l
Next
Next
.l

За goto просьба не пинать - я не знаю как без лишних флагов сделать выход из двойного цикла. Конечно, тут не критичен сам выход, но если массивы большие, то может понадобиться для оптимизации.

Не помню как там прерывается цикл в бейсике, либо break либо exit. Но суть что она должна принимать аргумент указывающий сколько циклов необходимо прервать (по умолчанию там 1).
По сабжу - что значит сравнить массив в твоем понимании? Можно либо сравнить элементы массива и тем самым определить, что их данные идентичны, либо сравнить адреса массивом. и тем самым определить что юзается один и тот же массив (или что массив не создан).

Hurrit 10.09.2009 04:52

Ответ: Сравнение массивов
 
Сравнивать в моем понимании, это узнать, все ли поля одинаковые в обоих массивах, если да, то переход на следующий уровень. Когда я проверял через цикл, игра сразу переходила на следующий уровень при первых же одинаковых переменных. Вот такая вот была проблема, сегодня попробую метод Михаила и отпишусь.

Hurrit 10.09.2009 12:03

Ответ: Сравнение массивов
 
Всё отлично работает. Всем спасибо за помощь


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot