PDA

Просмотр полной версии : И снова арреи, но не просто.....


Countach
07.12.2001, 00:44
Я тут уже спрашивал недавно про массивы во флэше, а вот теперь появилось не сколько других проблем. PS мы говорим исключительно о двухмерных массивах. И просьба не засарять топик ненужными коментариями, спасибо. :)
В прошлый раз мы нашли очень удобный метод


a=new Array(2);
b=new Array(2);
myarray= new Array(a,b);
for (i=0; i<2; i++) {
for (j=0; j<2; j++) {
myvar=random(5);
myarray[i][j]=myvar;
}
}
for (i=0; i<2; i++) {
for (j=0; j<2; j++) {
myvar=myarray[i][j];
trace(myvar);
}
}


Тут вродеб все чудненько, но у меня такой случай, что я не знаю размеры массива с самого начала :(
То есть
будет например переменная
NoResources=6; //кол-во ресурсов в системе
И будет другая переменная, которую введет пользователь
NoProcesses

Вот мне и надо бы хотя бы один примерчик как такое осуществить, надо задекларировать массив, занести туда данные, а потом есстесно считать данные оттуда :) вот и все.

Пологите пожалуйста, и желательно не очень трудным способом, а то итак программа будет нагружена ойойой как :)
Всем заранее спасибо :)

Big_J_
07.12.2001, 12:42
Кароче говоря делаеш форму первое поле получает переменную "X" да и второе к примеру переменную "Y"...

потом пишеш

my_array = new Array () - создали одномерный массив но не определили для него размера :) !!!

за тем


for (i = 0; i<= X ; i++){
//здесь присваеваеш для каждого элемента массива свой массив!!!
for (j = 0; j<= Y ; j++){
//здесь описуеш свой массив
my_array[i] = new Array(); опять таки не определенного размера :). Затем тулиш туда свои переменные
my_array[i][j] = {...}-это не указатель как прописывать строку а указатель на пустое множество типа можно присвоить чему хочеш ... Это не намек на C++... :D
}
}


Ну вот и все но я кажется уже об этом писал когдато :D :) :D

Big_J_
07.12.2001, 12:50
Читать массив my_array также как и заполнять

variable = y_array[x][y]

где

- x,y - переменные я думаю тебе известные
- variable переменная каторой нужно присвоить ечейку массива


Да чуть не забыл если у тебя массив будет не матричного вида а на пример такой

1,2,3,4,5,6,7,8,9,0
2,3,4,5,6,7,8
1,2,3,3,4,5,6,7,8,0
1,1,2,2,1,1
1,

то в место пустых ячеек flash присваюет нолики хотя я думаю ты и сам догадалси :D то есть получиш ты такое вот...

1,2,3,4,5,6,7,8,9,0
2,3,4,5,6,7,8,0,0,0
1,2,3,3,4,5,6,7,8,0
1,1,2,2,1,1,0,0,0,0
1,0,0,0,0,0,0,0,0,0

удачи ;)

Countach
07.12.2001, 20:00
Блин ну написано вроде намана, но вот проблемки опять. Теперь конкретней :)


my_array = new Array ();
X=6;
Y=5;

for (i = 0; i<= X ; i++){
for (j = 0; j<= Y ; j++){
my_array[i] = new Array();
my_array[i][j] = {...};
}
}

my_array[1][1]=6;
trace(my_array[1][1]);


В output выводит следущее, просто во флешке такое никада не делал и не знаю, это наверное оч просто

Scene=Scene 1, Layer=Layer 1, Frame=1: Line 8: Identifier expected
my_array[i][j] = {...};

Scene=Scene 1, Layer=Layer 1, Frame=1: Line 10: Unexpected '}' encountered
}


Вообщем помогите пожалуйста :( почему он так ругается?

ЗЫ мне это фигня не понятна на С++ смахивает но типа что тут, и действительно ли надо 3 и только 3 точки там, что синтаксис такой типа ? :)

my_array[i][j] = {...};

Countach
07.12.2001, 20:03
А вот так ВАЩЕ ни хрена не выводит :(

my_array = new Array ();
X=6;
Y=5;

for (i = 0; i<= X ; i++){
for (j = 0; j<= Y ; j++){
my_array[i] = new Array();
myvar=random(5);
my_array[i][j] = myvar;
}
}

trace(my_array[1][1]);

:confused:

Countach
07.12.2001, 20:07
PS плиз не используйте Х и У как фиг знает чё, пишите плизззз row и column
а то итак через задницу все во флэшке ;)

Countach
07.12.2001, 20:17
Не млин мне пора на прогулку, а то уже хернииииия пошла. :)

my_array = new Array ();
X=6;
Y=5;

for (i = 0; i<= X ; i++){
my_array[i] = new Array();
for (j = 0; j<= Y ; j++){
myvar=random(5);
my_array[i][j] = myvar;
}
}

for (i = 0; i<= X ; i++){
for (j = 0; j<= Y ; j++){
trace(my_array[i][j]);
}
}

Во так работаеть :)

Блин а все-таки Х=row, Y=column??? Правильно???

ЗЫ Big_J_=Big_thx_;

ish
07.12.2001, 20:18
ну дык а количество элементо массива кто указывать будет? :)
или так тогда:

my_array = new Array ();
X=6;
Y=5;

for (i = 0; i<= X ; i++){
my_array.push(new Array());
for (j = 0; j<= Y ; j++){
myvar=random(5);
my_array[i].push(myvar);
}
}

trace(my_array[1][1]);

или же:

X=6;
Y=5;
my_array = new Array(X);


for (i = 0; i<= X ; i++){
my_array[i]=new Array(Y)
for (j = 0; j<= Y ; j++){
myvar=random(5);
my_array[i][j]=myvar;
}
}

trace(my_array[1][1]);

Countach
07.12.2001, 20:22
2ish
пасибки
Но вот тока я смотрю вы тут все STACK любите трогать, со всеми там "пуш энд поп" :)

Вот как я сделал, так мона ж тоже. Наверно тоже прально. Или я не усек мистейку??? ;)

Countach
07.12.2001, 20:26
Эээээээ почему он мне 42 элемента в аутпут выдает вместо 30 (типа 6 на 5)????
Не понял :(



my_array = new Array ();
X=6;
Y=5;

for (i = 0; i< X ; i++){
my_array[i] = new Array();
for (j = 0; j< Y ; j++){
myvar=random(5);
my_array[i][j] = myvar;
}
}

for (i = 0; i< X ; i++){
for (j = 0; j< Y ; j++){
trace(my_array[i][j]);
}
}


Тут просто до меньше икса надо идти, а не до меньше равно :)

for (i = 0; i< X ; i++){

ish
07.12.2001, 20:26
:)) ну можно и так
ЗЫ: push, pop ...эээ причем тут стеки :) эт тебе не асм эт экшенскрипт :) стандартные функции присущие объекту Array

ish
07.12.2001, 20:30
не 6х5 а 7х6 :)

0<i<=5 // (0,1,2,3,4,5) total 6
o<j<=6 // (0,1,2,3,4,5,6) total 7

ish
07.12.2001, 20:31
тег <joke> пропустил :))

Countach
07.12.2001, 20:31
Ууууу тут как все запущено :( не ну идея такая же наверно
push -> write to the top
pop -> read from the top
:)

ASM rulez ;sometimes :D

Countach
07.12.2001, 20:33
:)
Пасибо бАльшое человеческое, я уж думал на С++ делать этот примитив :(
Флэшик спас :) отлечу на шарика, тычер сказал что ему до фени в чем мы програмить будем :)

Countach
07.12.2001, 20:38
Не блин, а если серьёзно :) Х (икс) - это ряды или колонки??

//и пора пойти воздуха подышать, холодно блин +10 :(

ish
07.12.2001, 20:42
:) это вопрос философии, смотря как смотреть :)
ну вобще принято что обрабатываются строчки столбца, а не столбцы строчки, то есть для твоего примера X это количество столбцов а i номер столбца.

Countach
07.12.2001, 20:48
[big joke]
А в С++ типа так

for (i=0; i<row; i++) {
for (j=0; j<column; j++) {
....
}
}

получается что обрабатываются колонки одного ряда, затем колонки другого ряда
ХОТЯ
это прально дело философии

лана все пора отдохнуть :)
[/big joke]

УШЕЛ, тока не дразните, все сам понял :p

Big_J_
10.12.2001, 12:58
Ну ты Countach даеш

давай по парядку тебе нужен был массив да ПОЛУЧИ


my_array = new Array();//СТОЛБИКИ
for (col = 0; col<=6; col++){//цыкл для каждого столбика
my_array[col] = new Array();//объевляеш массив строк для каждого из столбиков :)
for(row = 0; row<= 5; row++){
my_array[col][row] = random(5) //Вроде так ДА???
}
}
А потом трейсь себе ...


Тока я одого не понял если ты C++ изучал то не ушто есть разница как переменную назвать :D

Это как в армейском анегдоте :)

Летело "К" самолетов не К-а мало пусть будет "Н" самолетов :)

главное алгоритма :)

Ну ладушки дерзай... УДАЧИ

Countach
10.12.2001, 17:12
Блин я просто тада плохо соображал, а ты наеежаешь теперь :( Писал фиготень всякую, я бы на следущий день постирал это все ;)
Сори за дурь не подумай ниче плохого :p