Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Произведение двух квадратных матриц (http://www.flasher.ru/forum/showthread.php?t=152274)

linnard 15.03.2011 00:33

Произведение двух квадратных матриц
 
Здравствуйте. Пишу программу для нахождения произведения двух квадратных матриц. После ввода размерности матрицы, создаются поля для ввода элементов. Как эти элементы добавить в двумерный массив и по возможности перемножить на элементы другой матрицы?
Вот часть кода(поля создаются а в массив не добавляются):

Код AS3:

var arr:Array=new Array();
        var tf:TextField;
        for (var j:int = 0; j < num_ans; j++) //создание столбцов для ввода. num_ans - размерность матрицы.
        {
      for (var i:int = 0; i < num_ans; i++)//создание строк для ввода.
            {
            tf = new TextField();
            tf.type = TextFieldType.INPUT;
      tf.x = 100 + (15 * j);
            tf.y = 80 + (15 * i);
            tf.width = 15;
            tf.height = 15;
            tf.border = true;
            tf.background = true;
            tf.defaultTextFormat = text_type;
      tf.backgroundColor = 0xFFFFFF;
            addChild(tf);
            arr[i][j].push(tf);
      }
      }


i.o. 15.03.2011 00:43

Наверное потому, что забыли создать массив
Код AS3:

arr[i] = new Array();
....
....
arr[i][j].push(tf);


gloomyBrain 15.03.2011 00:44

Мы не можем создать 2-мерный массив. Мы можем только создать массив массивов:
Код AS3:

 
var table:Array/*of Array*/ = new Array();
var column:Array/*of TextField*/ = null;
 
var col:int = 0;
var width:int = 10;
 
var row:int = 0;
var height:int = 10;
 
for (col = 0; col  < width; ++col) {
 
column = new Array();
table.push(column);
 
for (row = 0; row < height: ++row) {
 
column.push(new TextField());
 
}
 
}

А потом к этому массиву массивов можно обращаться так
Код AS3:

table[x][y].text = "Какой-то текст"


linnard 15.03.2011 00:52

Код AS3:

arr[i] = new Array();

Синтаксическая Ошибка: ожидается точка с запятой перед leftbracket

i.o. 15.03.2011 00:54

вы уверены, что именно это строка? я уверен, что нет

linnard 15.03.2011 00:54

Цитата:

Сообщение от gloomyBrain (Сообщение 980531)
Мы не можем создать 2-мерный массив. Мы можем только создать массив массивов:
Код AS3:

 
var table:Array/*of Array*/ = new Array();
var column:Array/*of TextField*/ = null;
 
var col:int = 0;
var width:int = 10;
 
var row:int = 0;
var height:int = 10;
 
for (col = 0; col  < width; ++col) {
 
column = new Array();
table.push(column);
 
for (row = 0; row < height: ++row) {
 
column.push(new TextField());
 
}
 
}

А потом к этому массиву массивов можно обращаться так
Код AS3:

table[x][y].text = "Какой-то текст"


Спасибо, буду экспериментировать)

Добавлено через 1 минуту
Цитата:

Сообщение от i.o. (Сообщение 980540)
вы уверены, что именно это строка? я уверен, что нет

Уверен, ошибка на этой строке

Добавлено через 23 часа 7 минут
Подскажите пожалуйста, где я допустил ошибку в ниже приведенном алгоритме умножения двух квадратных матриц. почему-то не работает...

Код AS3:

var table_res:Array =new Array();
var column_res:Array = null;
for(i = 0; i < num_ans; i++)
        column_res = new Array();
        table_res.push(column_res);
    for(j = 0; j < num_ans; j++){
 
      for(var k:int = 0; k < num_ans; k++)
        //table_res[i][j] += table[i][k] * table2[k][j];
  column_res.push(table[i][k].text * table2[k][j].text);
        }



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

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