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

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

В данной теме приведены примеры решения задач на одномерные массивы на языке JavaScript. Тема раскрывает базовые операции по созданию массива, выделению памяти для массива, обработке массива, выводу массива.


Содержание


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

1. Ввод и обработка введенных чисел с клавиатуры. Формирование массива. Проведение вычислений

Условие задачи. С клавиатуры вводятся числа. Конец ввода – число 0. Сформировать одномерный массив вводимых чисел. Вычислить сумму и среднее арифметическое элементов массива.

Решение.

Для ввода и обработки чисел лучше всего подойдет цикл do-while.

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

// Задача. С клавиатуры вводятся числа.
// Сформировать массив введенных чисел.
// Вычислить сумму и среднее арифметическое элементов массива.

// 1. Объявление пустого массива
var A = []

// 2. Ввод чисел в цикле и формирование массива
var num

do
{
  num = prompt("num = ")
  if (num!=0)
    A += parseFloat(num) // прибавить число к массиву
} while (num!=0);

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

// 4. Вычислить сумму элементов массива
var sum = 0

for (var i=0; i<A.length; i++)
  sum += parseFloat(A[i])

// 5. Вычислить среднее арифметическое элементов массива
var avg = sum / A.length

// 6. Вывести сумму и среднее арифметическое
document.write("sum = " + sum + "<br>")
document.write("avg = " + avg + "<br>")

Результат

A:
8 5 6 4 1

sum = 24
avg = 4.8

 

2. Реверсирование массива

Условие задачи. Дан одномерный массив целых чисел размерностью n элементов. Массив вводится с клавиатуры. Сформировать новый массив, в котором элементы размещаются в обратном порядке.

Решение.

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

// Задача.
// Сформировать реверсированный массив.

// 1. Объявление массивов
var A1 = [] // исходный массив
var A2 = [] // результирующий массив

// 2. Задать количество элементов в массиве A1
A1.length = prompt("n = ")

// 3. Ввести элементы массива A1 в цикле
for (var i=0; i<A1.length; i++)
  A1[i] = prompt("A1[" + i + "] = ")

// 4. Вывести n и массив A1
document.write("n = " + A1.length + "<br>")

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

// 4. Сформировать реверсированный массив A2

for (var i=A1.length-1; i>=0; i--)
  A2[A1.length-i-1] = A1[i];

// 5. Вывести массив A2
document.write("A2:<br>")
for (var i=0; i<A2.length; i++)
  document.write(A2[i] + " ")
document.write("<br>")

Результат

n = 5
A1:
3 4 1 8 7
A2:
7 8 1 4 3

 

3. Сжатие массива. Удаление отрицательных элементов из массива

Условие задачи. Задан массив размерностью n элементов. Массив вводится с клавиатуры. Реализовать сжатие массива, извлекая из него все отрицательные элементы.

Решение. Одним из возможных решений этой задачи является создание нового массива, не содержащего отрицательные элементы.

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

// Задача. Задан массив размерностью n.
// Сжать массив, удалив из него все отрицательные элементы.

// 1. Объявление массивов
var A1 = [] // исходный массив
var A2 = [] // результирующий массив

// 2. Задать количество элементов в массиве A1
A1.length = prompt("n = ")

// 3. Ввести элементы массива A1 в цикле
for (var i=0; i<A1.length; i++)
  A1[i] = prompt("A1[" + i + "] = ")

// 4. Вывести n и исходный массив A1
document.write("n = " + A1.length + "<br>")

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

// 4. Сформировать сжатый массив A2

var j = 0 // текущее количество элементов в массиве A2

for (var i=0; i<A1.length; i++)
  if (A1[i]<0)
    A2[j++] = A1[i]

// 5. Вывести массив A2
document.write("A2:<br>")
for (var i=0; i<A2.length; i++)
  document.write(A2[i] + " ")
document.write("<br>")

Результат

n = 8
A1:
1 -2 3 -4 5 -6 7 -8
A2:
-2 -4 -6 -8

 

4. Разделение массива на 2 части

Условие задачи. Дан одномерный массив длиной n. Разделите его на две части так, чтобы в одной части были положительные элементы, а в другой части были отрицательные элементы.

Решение.

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

// Разделение массива на части

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

// 2. Задать количество элементов в массиве A
A.length = prompt("n = ")

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

// 4. Вывести n и исходный массив A1
document.write("n = " + A.length + "<br>")

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

// 4. Сформировать массивы B, C,
// массив B - положительные элементы, массив C - отрицательные элементы.
var nb = 0 // текущее количество элементов в массиве B
var nc = 0 // текущее количество элементов в массиве C

for (var i=0; i<A.length; i++)
  if (A[i]>=0)
    B[nb++] = A[i];
  else
    C[nc++] = A[i];

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

// 6. Вывести массив C
document.write("C:<br>")
for (var i=0; i<C.length; i++)
  document.write(C[i] + " ")
document.write("<br>")

Результат

n = 9
A:
-1 2 -3 4 -5 6 -7 8 -9
B:
2 4 6 8
C:
-1 -3 -5 -7 -9

 

5. Объединение двух массивов

Условие задачи. Заданы два одномерных массива A1 и A2, элементы которых представляют собой случайные целые числа в интервале [-10; +10]. Объединить эти два массива в третий массив, в который сначала войдут элементы первого массива, а затем второго, сохраняя свою первоначальную последовательность.

Решение.

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

// Объединение массивов B = A1 + A2

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

// 2. Задать количество элементов в массиве A1
A1.length = prompt("A1.length = ")

// 3. Задать количество элементов в массиве A2
A2.length = prompt("A2.length = ")

// 4. Заполнить массивы A1, A2 случайными числами в интервале [-10; 10]
for (var i=0; i<A1.length; i++)
  A1[i] = parseInt(-10 + Math.random()*(10-(-10)+1))

for (var i=0; i<A2.length; i++)
  A2[i] = parseInt(-10 + Math.random()*(10-(-10)+1))

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

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

// 7. Сформировать результирующий массив B

// Сформировать длину массива B
B.length = A1.length + A2.length

// Записать элементы массива A1
for (var i=0; i<A1.length; i++)
  B[i] = A1[i]

// Записать элементы массива A2
for (var i=0; i<A2.length; i++)
  B[A1.length + i] = parseInt(A2[i])

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

Для заданных n1 = 9, n2 = 7 программа выдала следующий результат

A1:
0 -9 3 4 -6 6 1 -9 5

A2:
-3 -6 10 -3 -1 6 6

B:
0 -9 3 4 -6 6 1 -9 5 -3 -6 10 -3 -1 6 6

 

6. Сортировка массива строк методом вставки

Условие задачи. Задан массив строк размерностью n. Посортировать элементы массива в возрастающем порядке («a», «b», «cd»,…).

Решение.

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

// Сортировка массива строк методом вставки.

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

// 2. Ввести размер массива n
var n = prompt("n = ")

// 3. Выделить память для массива строк
A.length = n

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

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

// 6. Цикл сортировки методом вставки
for (var i=0; i<A.length-1; i++)
  for (var j=i; j>=0; j--)
    if (A[j]>A[j+1])
    {
      // обменять местами
      var t = A[j]
      A[j] = A[j+1]
      A[j+1] = t
    }

// 7. Вывести отсортированный массив A
document.write("-----------------------------<br>")
for (var i=0; i<A.length; i++)
  document.write(A[i]+"<br>")
document.write("<br>")

Результат

A:
kd
fcw
aet
tqw ew
abcd
wer
oiww
xlsdk

-----------------------------
abcd
aet
fcw
kd
oiww
tqw ew
wer
xlsdk

 


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