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

 


Споріднені теми