Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.03.2013, 04:59
Аватар для Demath
Профессор
Отправить личное сообщение для Demath Посмотреть профиль Найти все сообщения от Demath
 
Регистрация: 22.06.2012
Сообщений: 168

Переменную не видно
Помогите разобраться и подскажите, как корректно записать, пожалуйста.

Не могу понять, почему в функции TrUnMatrix(A) функция TrMatrixMinor(i,j,A) не видит переменную А.

<script type="text/javascript">
function TransMatrix(A)            //Транспонирование матрицы
{   var i, j, AT = [];

    for (i=0; i<A[0].length; i++)
        { AT[i] = [];
          for (j=0; j<A.length; j++)
              { AT[i][j] = A[j][i] }
        }
    return (AT);
}

function TrMatrixMinor(i,j,A)        //Минор Tr.un. матрицы 
{   A.splice(i,1);
    A = TransMatrix(A);
    A.splice(j,1);
    return (A[0][1]+A[1][0]);
}

function TrUnMatrix(A)                 //Проблема с этой функцией
{   var i,j, adjA = [];

    for (i=0; i<A.length; i++)
        { adjA[i] = [];
          for (j=0; j<A.length; j++)
              { adjA[i][j] = TrMatrixMinor(i,j,A) }   //Функция TrMatrixMinor не видит
        }                                             //переменную A(2d массив).
                                                     
    return adjA.join('\n');     //Должен возвращаться 2d массив такого же размера как и A
}
</script>

<button onclick="alert( TrUnMatrix([[3,-4,6,23],[-11,71,0,31],[-4,-7,19,1],[-41,17,-19,-35]]) )">Вычислить</button>
Ответить с цитированием
  #2 (permalink)  
Старый 01.03.2013, 05:36
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<script type="text/javascript">
function TransMatrix(A)            //Транспонирование матрицы
{   var i, j, AT = [];

    for (i=0; i<A[0].length; i++)
        { AT[i] = [];
          for (j=0; j<A.length; j++)
              { AT[i][j] = A[j][i] }
        }
    return (AT);
}

function TrMatrixMinor(i,j,A)        //Минор Tr.un. матрицы 
{   A.splice(i,1);
    A = TransMatrix(A);
    A.splice(j,1);
alert('function TrMatrixMinor(i,j,A)\n\nA[0][1]='+A[0][1]+'\nA[1][0]='+A[1][0])
    return (A[0][1]+A[1][0]);
}

function TrUnMatrix(A)                 //Проблема с этой функцией
{   var i,j, adjA = [];

    for (i=0; i<A.length; i++)
        { adjA[i] = [];
          for (j=0; j<A.length; j++)
              { adjA[i][j] = TrMatrixMinor(i,j,A) }   //Функция TrMatrixMinor не видит
        }                                             //переменную A(2d массив).
                                                     
    return adjA.join('\n');     //Должен возвращаться 2d массив такого же размера как и A
}
</script>

<button onclick="alert('Ответ:\n\n'+  TrUnMatrix([[3,-4,6,23],[-11,71,0,31],[-4,-7,19,1],[-41,17,-19,-35]]) )">Вычислить</button>

Последний раз редактировалось Deff, 01.03.2013 в 05:50.
Ответить с цитированием
  #3 (permalink)  
Старый 01.03.2013, 06:19
Аватар для Demath
Профессор
Отправить личное сообщение для Demath Посмотреть профиль Найти все сообщения от Demath
 
Регистрация: 22.06.2012
Сообщений: 168

Deff, я не понимаю, что с этим делать, я извиняюсь.

Сейчас непосредственно записал массив во вложенную функцию в цикле - все верно находит, но никак не хочет передаваться через переменную A


<script type="text/javascript">
function TransMatrix(A)            //Транспонирование (стандартное) матрицы
{   var i, j, AT = [];

    for (i=0; i<A[0].length; i++)
        { AT[i] = [];
          for (j=0; j<A.length; j++)
              { AT[i][j] = A[j][i] }
        }
    return (AT);
}

function TrMatrixMinor(i,j,A)        //Минор Tr.un. матрицы 
{   A.splice(i,1);
    A = TransMatrix(A);
    A.splice(j,1);
    return (A[0][1]+A[1][0]);
}

function TrUnMatrix(A)                 //Проблема с этой функцией
{   var i,j, adjA = [];

    for (i=0; i<A.length; i++)
        { adjA[i] = [];
          for (j=0; j<A.length; j++)
              { var C = [[3,-4,6,23],[-11,71,0,31],[-4,-7,19,1],[-41,17,-19,-35]];
                adjA[i][j] = TrMatrixMinor(i,j,C) }   //Функция TrMatrixMinor не видит
        }                                             //переменную A(2d массив)
                                                     
    return adjA.join('\n');     //Должен возвращаться 2d массив такого же размера как и A
}
</script>

<button onclick="alert( TrUnMatrix([[3,-4,6,23],[-11,71,0,31],[-4,-7,19,1],[-41,17,-19,-35]]) )">Вычислить</button>

Последний раз редактировалось Demath, 01.03.2013 в 06:21.
Ответить с цитированием
  #4 (permalink)  
Старый 01.03.2013, 06:54
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Demath,
A.splice(i,1); Походу ты удаляешь её
Ответить с цитированием
  #5 (permalink)  
Старый 01.03.2013, 07:19
Аватар для Demath
Профессор
Отправить личное сообщение для Demath Посмотреть профиль Найти все сообщения от Demath
 
Регистрация: 22.06.2012
Сообщений: 168

Deff, а как можно удалить в двумерном квадратном массиве заданные строку и столбец?

Например, в [[3,-4,6],[-11,71,0],[-4,-7,19]] нужно удалить 2-ю строку и 3-й столбец,
т.е. чтобы на выходе получилось [[3,-4],[-4,-7]].
Ответить с цитированием
  #6 (permalink)  
Старый 01.03.2013, 11:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Demath,
var arr = [[3,-4,6],[-11,71,0],[-4,-7,19]], t = 1 , e = 2 , l = arr.length;
while (l--) {
  arr[l].splice(e,1);
  if(l==t) arr.splice(t,1)
}
alert(arr.join('\n'));
Ответить с цитированием
  #7 (permalink)  
Старый 01.03.2013, 11:42
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

1. не нужен условный оператор в цикле, если заранее известно какую строку надо удалить.
2. нет надобности удалять элемент из той строки, которая все равно будет удалена
var arr = [[3,-4,6],[-11,71,0],[-4,-7,19]], t = 1 , e = 2 , l = arr.length;
arr.splice(t,1); --l; // можно было сразу  l = arr.length-1
while (l--)
  arr[l].splice(e,1);
alert(arr.join('\n'));
Ответить с цитированием
  #8 (permalink)  
Старый 01.03.2013, 11:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

rgl,
Молодец но лучше еслиб ваши замечания написал Demath,
Ответить с цитированием
  #9 (permalink)  
Старый 01.03.2013, 17:17
Аватар для Demath
Профессор
Отправить личное сообщение для Demath Посмотреть профиль Найти все сообщения от Demath
 
Регистрация: 22.06.2012
Сообщений: 168

Спасибо!

Подскажите ещё, пожалуйста, как получить массив из сумм элементов первых
и последних строк (arr[0].sum()+arr[arr.length-1].sum()) преобразованного массива (исходный массив без заданных строки и столбца).

Например, в [[3,-4,6],[-11,71,0],[-4,-7,19]] удаляем 2-ю строку (t=1) и 3-й столбец (e=2),
т.е. на выходе [[3,-4],[-4,-7]], и окончательно возвращаем сумму (3+(-4))+((-4)+(-7)).
С этим нет проблем (см.ниже).
Не могу догадаться, как "пробежаться" по всем t и e и получить массив результатов.

<script type="text/javascript">
function SpecialMinor(t,e,arr)
{
    var l = arr.length;

    arr.splice(t,1); --l;

    while (l--) { arr[l].splice(e,1) }

    return ( arr[0].sum()+arr[arr.length-1].sum() );
}

Array.prototype.sum = function()
{  for (var i=0, sum=0; i < this.length; sum += this[i++]); return sum; }
</script>

<button onclick="alert( SpecialMinor(1,2,[[3,-4,6],[-11,71,0],[-4,-7,19]]) )">Вычислить</button>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать переменную с jquery в php Максим2 jQuery 14 28.07.2013 11:38
Можно ли передать переменную ajax'om ? Vladislav Общие вопросы Javascript 2 18.02.2013 06:34
Как передать переменную в другую функцию adder-vb jQuery 3 31.01.2013 14:29
Передача данных в переменную kjia6ep Общие вопросы Javascript 13 19.12.2011 14:31
Как обозначить переменную выбранную в FileChooser? woo_hoo Общие вопросы Javascript 4 03.07.2008 12:58