JavaScript. Решение задач на двумерные массивы

Решение задач на двумерные массивы


Содержание


Поиск на других ресурсах:

1. Создание третьей матрицы на основе двух матриц

Условие задачи. Заданы две матрицы чисел A и B. Размерность матриц m×n (m — количество строк, n — количество столбцов). Числа матриц формируются случайно. Сформировать матрицу C в которой каждый элемент определяется по формуле

где i = 1, 2, …, m; j = 1, 2, …, n.

Решение.

// Двумерные массивы. Решение задач.

// Создание третьей матрицы на основе двух

// 1. Объявление матриц и их создание
var A = new Array(), B = new Array() // исходные матрицы
var C = [] // результирующая матрица

// 2. Ввести размерность матриц m, n
var m = prompt("m = ")
var n = prompt("n = ")

// 3. Выделить память для ячеек матриц
// 3.1. Выделить память для m строк матриц
A.length = m
B.length = m

// 3.2. Выделить память для n столбцов в каждой строке
for (var i=0; i<A.length; i++)
{
  // Создать массив A[i] и выделить для него память
  A[i] = new Array()
  A[i].length = n

  // Создать массив B[i] и выделить память для него
  B[i] = new Array()
  B[i].length = n
}

// 4. Заполнить матрицы A, B случайными числами в интервале [min; max]
var min = -10 // нижняя граница интервала
var max = 10 // верхняя граница интервала

for (var i=0; i<A.length; i++)
  for (var j=0; j<A[i].length; j++)
  {
    // Размеры массивов одинаковы, поэтому можно формировать сразу два массива
    A[i][j] = parseInt(min + Math.random()*(max - min + 1))
    B[i][j] = parseInt(min + Math.random()*(max - min + 1))
  }

// 5. Вывести матрицу A для контроля
document.write("A:<br>")
for (var i=0; i<A.length; i++)
{
  for (var j=0; j<A[i].length; j++)
    document.write(A[i][j] + " ")
  document.write("<br>")
}

document.write("<br>")

// 6. Вывести матрицу B для контроля
document.write("B:<br>")
for (var i=0; i<B.length; i++)
{
  for (var j=0; j<B[i].length; j++)
    document.write(B[i][j] + "\t")
  document.write("<br>")
}
document.write("<br>")

// 7. Сформировать результирующую матрицу C
// 7.1. Выделить память для матрицы C размером m*n
C.length = A.length // количество строк

for (var i=0; i<C.length; i++)
{
  C[i] = [] // создать массив C[i]
  C[i].length = n // задать количество столбцов
}

// 7.2. Заполнить значениями ячейки матрицы согласно условию задачи
for (var i=0; i<C.length; i++)
  for (var j=0; j<C[i].length; j++)
    C[i][j] = A[i][j]*A[i][j] + B[i][j]

// 8. Вывести результирующую матрицу C
document.write("C:<br>")
for (var i=0; i<C.length; i++)
{
  for (var j=0; j<C[i].length; j++)
    document.write(C[i][j] + " ")
  document.write("<br>")
}

Результат

A:
-1 5 -8 5 3
5 8 -3 -5 0
-5 10 0 -5 9

B:
9 -4 -9 1 -4
0 2 5 -1 6
1 -4 5 0 8

C:
10 21 55 26 5
25 66 14 24 6
26 96 5 25 89

 

2. Обработка матрицы, состоящей из строк. Определение количества строк согласно критерию

Условие задачи. Задана матрица A слов (строк) размером m×n. Определить, сколько строк матрицы имеют длину больше заданного k. Элементы матрицы A и m, n, k вводятся с клавиатуры.

Решение.

// Двумерные массивы. Решение задач.

// Определение количества строк матрицы согласно критерию

// 1. Объявление матрицы
var A = new Array()

// 2. Ввести размерность матрицы m*n
var m = prompt("m = ")
var n = prompt("n = ")

// 3. Ввести k
var k = prompt("k = ")

// 4. Выделить память для матрицы
A.length = m

for (var i=0; i<m; i++)
{
  A[i] = new Array()
  A[i].length = n
}

// 5. Цикл формирования матрицы строк
for (var i=0; i<m; i++)
  for (var j=0; j<n; j++)
  {
    A[i][j] = prompt("A[" + i + "][" + j + "] = ")
  }

// 6. Вывести матрицу A для контроля
document.write("A:<br>")
for (var i=0; i<A.length; i++)
{
  for (var j=0; j<A[i].length; j++)
    document.write(A[i][j] + " ")
  document.write("<br>")
}
document.write("<br><br>")

// 7. Цикл вычисления количества строк с длиной не больше k
var count = 0 // результат

for (var i=0; i<A.length-1; i++)
  for (var j=0; j<A[i].length; j++)
    if (A[i][j].length <= k)
      count++

// 7. Вывести результат
document.write("-----------------------------<br>")
document.write("count = " + count)

Результат

A:
abcd jklmn
jprstq 123456

-----------------------------
count = 2

 

3. Создать матрицу на основе двух других согласно формуле

Условие задачи. Дано натуральные числа m, n и матрица вещественных чисел Aij, Bij, где i = 1, 2, …, m; j = 1, 2, …, n. Вычислить значение элементов матрицы Cij, если:

Решение.

// Двумерные массивы. Решение задач.

// Формирование третьей матрицы исходя из двух заданных

// 1. Ввод m, n
var m = prompt("m = ")
var n = prompt("n = ")

// 2. Объявление матриц A, B и заполнение их значениями
// 2.1. Создать массивы A, B
var A = []
var B = []

// 2.2. Настроить количество строк m
A.length = m
B.length = m

// 2.3. Создать подмассивы и настроить их
for (var i=0; i<A.length; i++)
{
  // Создать подмассивы в массивах A, B
  A[i] = []
  A[i].length = n
  B[i] = []
  B[i].length = n
}

// 2.4. Ввести числа в массивы A, B
for (var i=0; i<A.length; i++)
  for (var j=0; j<A[i].length; j++)
    A[i][j] = prompt("A["+i+"]["+j+"] = ")

for (var i=0; i<B.length; i++)
  for (var j=0; j<B[i].length; j++)
    B[i][j] = prompt("B["+i+"]["+j+"] = ")

// 3. Вывести массивы A и B
document.write("A:<br>")
for (var i=0; i<A.length; i++)
{
  for (var j=0; j<A[i].length; j++)
    document.write(A[i][j]+" ")
  document.write("<br>")
}
document.write("<br>")

document.write("B:<br>")
for (var i=0; i<B.length; i++)
{
  for (var j=0; j<B[i].length; j++)
    document.write(B[i][j]+" ")
      document.write("<br>")
}
document.write("<br>")

// 4. Создание матрицы C и установка размеров матрицы
var C = []
C.length = m
for (var i=0; i<C.length; i++)
{
  C[i] = []
  C[i].length = n
}

// 5. Заполнение матрицы C результирующими значениями согласно формуле
for (var i=1; i<=C.length; i++)
  for (var j=1; j<=C[i-1].length; j++)
  {
    if (i<j)
      C[i-1][j-1] = i*i + j - 5;
    else
    if (i==j)
      C[i-1][j-1] = 1 / ((i+j)*(i+j)*(i+j));
    else
      C[i-1][j-1] = Math.sin(A[i-1][j-1])*Math.sin(B[i-1][j-1]) +
        Math.cos(B[i-1][j-1])
  }

// 6. Вывести результат
document.write("C:<br>")
for (var i=0; i<C.length; i++)
{
  for (var j=0; j<C[i].length; j++)
    document.write(C[i][j]+" ")
  document.write("<br>")
}

Результат

A:
1 2 3
4 5 6

B:
1 1 1
1 1 1

C:
0.125 -2 -1
-0.09652503516369604 0.015625 2

 

4. Определение содержимого двумерной таблицы согласно условию

Условие задачи. Дано натуральное число n. Определить количество положительных и количество отрицательных элементов таблицы A размерностью n×n, если

где i, j = 1, 2, …n.

Решение.

// Двумерные массивы. Решение задач.

// Дано натуральное число n. Определить количество положительных
// и количество отрицательных элементов таблицы A

// 1. Ввод n
var n = prompt("n = ")

// 2. Объявление таблицы A
var A = []

// 3. Настроить размеры таблицы A
A.length = n
for (var i=0; i<A.length; i++)
{
  A[i] = []
  A[i].length = n
}

// 4. Сформировать таблицу A по формуле
for (var i=0; i<A.length; i++)
  for (var j=0; j<A[i].length; j++)
    A[i][j] = Math.sin(i*i-j)

// 5. Вывести таблицу A для контроля
// с точностью 2 знака после запятой
document.write("A:<br>")
for (var i=0; i<A.length; i++)
{
  for (var j=0; j<A[i].length; j++)
    document.write(A[i][j].toFixed(2)+" ")
  document.write("<br>")
}
document.write("<br>")

// 6. Вычислить количество положительных и отрицательных элементов
var n1 = 0 // количество положительных
var n2 = 0 // количество отрицательных

for (var i=0; i<A.length; i++)
  for (var j=0; j<A.length; j++)
  {
    if (A[i][j]<0)
      n1++
    else
      n2++
  }

// 7. Вывести результат
document.write("n1 = " + n1 + "<br>")
document.write("n2 = " + n2 + "<br>")

Результат

A:
0.00 -0.84 -0.91 -0.14
0.84 0.00 -0.84 -0.91
-0.76 0.14 0.91 0.84
0.41 0.99 0.66 -0.28

n1 = 7
n2 = 9

 

5. Формирование одномерного массива на основе двумерной матрицы. Определение среднего арифметического столбца матрицы

Условие задачи. Задана матрица Aij, де i=1, 2, …, m, j = 1, 2, …, n. Создать новый одномерный массив Bi размером m, в котором элементы равны среднему арифметическому каждого столбца матрицы A.

Решение.

// Двумерные массивы. Решение задач.

// Сформировать массив средних арифметических столбцов заданной матрицы
// 1. Ввод m, n
var m = prompt("m = ")
var n = prompt("n = ")

// 2. Объявление матрицы A
var A = []

// 3. Настроить размеры матрицы A
A.length = m
for (var i=0; i<A.length; i++)
{
  A[i] = []
  A[i].length = n
}

// 4. Ввести матрицу A с клавиатуры
for (var i=0; i<A.length; i++)
  for (var j=0; j<A[i].length; j++)
    A[i][j] = prompt("A["+i+"]["+j+"] = ")

// 5. Вывести m, n для контроля
document.write("m = " + m + "<br>")
document.write("n = " + n + "<br>")

// 6. Вывести матрицу A для контроля
document.write("A:<br>")
for (var i=0; i<A.length; i++)
{
  for (var j=0; j<A[i].length; j++)
    document.write(A[i][j]+" ")
  document.write("<br>")
}

// 7. Создать результирующий массив B и настроить его размеры
var B = []
B.length = n // количество столбцов, массив одномерный

// 8. Цикл вычисления среднего арифметического и заполнение матрицы B
var avg // вспомогательные переменные - среднее арифметическое
for (var i=0; i<n; i++) // внешний цикл по столбцах
{
  avg = 0;
  for (var j=0; j<m; j++) // вычислить сумму столбца i
    avg += parseFloat(A[j][i])

  B[i] = avg / m
}

// 9. Вывести результат
document.write("B:<br>")
for (var i=0; i<B.length; i++)
  document.write(B[i].toFixed(2) + " ")
document.write("<br>")

Результат

m = 2
n = 3
A:
1 2 3
4 5 6
B:
2.50 3.50 4.50

 


Связанные темы