Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   умножение матрицы на число (https://javascript.ru/forum/misc/47828-umnozhenie-matricy-na-chislo.html)

sega_gaga 09.06.2014 12:34

умножение матрицы на число
 
помогите, пожалуйста, с решением 2 задач

15. Напишите функцию, умножающую квадратную матрицу на число. Матрица и сомножитель должны быть параметрами функции. Результатом функции должна быть новая матрица (старая должна сохраниться). Функция должна проверять также, что входная матрица квадратная.
16. Напишите функцию, умножающую матрицу на число. Матрица и числовой множитель должны быть параметрами функции. Результатом функции должна быть новая матрица (старая должна сохраниться) или false, если строки матрицы имеют разную длину.

depp 10.06.2014 03:01

var m1 = [[2,1],[3,9]],
    m2 = [[2,1],[3,9],[4,5]],
    m3 = [[2,1],[3,9],[4,5,6]];

function multi(m,n) {
    if (!m.every(function(n){return n.length==m.length})) {
        return alert('Матрица не квадратная');
    }
    return m.map(function(a){return a.map(function(v){return v*n})});
}

function multi_false(m,n) {
    if (!m.every(function(n){return m[0].length==n.length})) {
        return false;
    }
    return m.map(function(a){return a.map(function(v){return v*n})});
}

console.log(multi(m1,3)); // [[6, 3], [9, 27]]
console.log(multi(m2,3)); // Матрица не квадратная
console.log(multi(m3,3)); // Матрица не квадратная
console.log(multi_false(m1,3)); // [[6, 3], [9, 27]]
console.log(multi_false(m2,3)); // [[6, 3], [9, 27], [12, 15]]
console.log(multi_false(m3,3)); // false

Demath 21.06.2014 02:40

Думая, аффтору нужно так

Цитата:

Сообщение от sega_gaga
15. Напишите функцию, умножающую квадратную матрицу на число. Матрица и сомножитель должны быть параметрами функции. Результатом функции должна быть новая матрица (старая должна сохраниться). Функция должна проверять также, что входная матрица квадратная.

function mult1(num, A)
{   
    var n = A.length;
    
    for (var i = 0; i < n; i++)
    {  if (A[i].length != n)
       {  alert('Ошибка!\nМатрица не квадратная.');
          return false;
       }
    }
    
    var B = [];

    for (var i = 0; i < n; i++)
    {  B[i] = [];
       for (var j = 0; j < n; j++) B[i][j] = num * A[i][j];
    }
    
    return B;
}


Цитата:

Сообщение от sega_gaga
16. Напишите функцию, умножающую матрицу на число. Матрица и числовой множитель должны быть параметрами функции. Результатом функции должна быть новая матрица (старая должна сохраниться) или false, если строки матрицы имеют разную длину.

function mult2(num, A)
{   
    var n = A.length, m = A[0].length;
    
    for (var i = 0; i < n; i++)
    {  if (A[i].length != m)
       {  alert('Ошибка!\nСтроки матрицы разной длины.');
          return false;
       }
    }
    
    var B = [];

    for (var i = 0; i < n; i++)
    {  B[i] = [];
       for (var j = 0; j < m; j++) B[i][j] = num * A[i][j];
    }
    
    return B;
}


Часовой пояс GMT +3, время: 23:43.