Lavig

JS3

Oct 7th, 2026
23
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <!DOCTYPE html>
  2. <html lang="uk">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.     <title>Лабораторна робота 3</title>
  7. </head>
  8. <body>
  9.     <h3>Рівень 1</h3>
  10.     <button type="button" onclick="GetData1()">Обчислити Рівень 1</button>
  11.  
  12.     <h3>Рівень 2</h3>
  13.     <form name="form2">
  14.         <label for="n2">Розмірність:</label>
  15.         <input type="text" id="n2" name="n2"><br><br>
  16.         <button type="button" onclick="GetData2()">Обчислити Рівень 2</button>
  17.     </form>
  18.  
  19.     <h3>Рівень 3</h3>
  20.     <form name="form3">
  21.         <label for="n3">Розмірність N:</label>
  22.         <input type="text" id="n3" name="n3"><br>
  23.         <label for="min3">Мінімум:</label>
  24.         <input type="text" id="min3" name="min3"><br>
  25.         <label for="max3">Максимум:</label>
  26.         <input type="text" id="max3" name="max3"><br><br>
  27.         <button type="button" onclick="GetData3()">Обчислити Рівень 3</button>
  28.     </form>
  29.  
  30.     <script>
  31.         // Універсальна функція генерації випадкового цілого числа у діапазоні [min, max]
  32.         function GetRandomInt(min, max) {
  33.             // 1. (max - min + 1) — визначає кількість можливих варіантів чисел у діапазоні (включаючи min і max).
  34.             // 2. Math.random() — дає дробове число від 0.0 до 0.999... (число 1.0 ніколи не випадає).
  35.             // 3. Множення Math.random() * (max - min + 1) розтягує випадкове число на потрібний інтервал [0.0 ... N.999].
  36.             // 4. Math.floor() — відкидає дробову частину (округлює до меншого цілого).
  37.             // 5. + min — зсуває отримане ціле число від нуля до заданого мінімуму.
  38.             return Math.floor(Math.random() * (max - min + 1)) + min;
  39.         }
  40.  
  41.         // Обробник для Рівня 1 (зчитування через prompt)
  42.         function GetData1() {
  43.             let N = parseInt(prompt("Введіть розмірність:")); // Зчитуємо N через вспливаюче вікно prompt та перетворюємо текст у ціле число
  44.  
  45.             if (isNaN(N) || N <= 0) { // Перевірка: якщо введено не число (NaN) або число <= 0
  46.                 alert("Введено некоректні дані!"); // Виводимо модальне вікно з повідомленням про помилку
  47.             } else {
  48.                 document.write("<h3>Результати для Рівня 1</h3>"); // Виводимо заголовок для Рівня 1 у документ
  49.                 RunTask1(N, 1, 9); // Викликаємо Завдання 1 з розмірністю N та фіксованим діапазоном 1..9
  50.                 RunTask2(N, 1, 9); // Викликаємо Завдання 2 з розмірністю N та фіксованим діапазоном 1..9
  51.             }
  52.         }
  53.  
  54.         // Обробник для Рівня 2 (зчитування розмірності з форми form2)
  55.         function GetData2() {
  56.             let N = parseInt(document.forms["form2"].elements["n2"].value); // Отримуємо значення з поля n2 форми form2 і конвертуємо в int
  57.  
  58.             if (isNaN(N) || N <= 0) { // Перевіряємо коректність введеного значення N
  59.                 alert("Введено некоректні дані!"); // Сповіщаємо користувача про помилку
  60.             } else {
  61.                 document.write("<h3>Результати для Рівня 2</h3>"); // Друкуємо заголовок Рівня 2
  62.                 RunTask1(N, 1, 9); // Запускаємо Завдання 1 (діапазон 1..9)
  63.                 RunTask2(N, 1, 9); // Запускаємо Завдання 2 (діапазон 1..9)
  64.             }
  65.         }
  66.  
  67.         // Обробник для Рівня 3 (зчитування N, min, max з форми form3)
  68.         function GetData3() {
  69.             let N = parseInt(document.forms["form3"].elements["n3"].value); // Отримуємо N з текстового поля n3
  70.             let min = parseInt(document.forms["form3"].elements["min3"].value); // Отримуємо min з текстового поля min3
  71.             let max = parseInt(document.forms["form3"].elements["max3"].value); // Отримуємо max з текстового поля max3
  72.  
  73.             // Перевіряємо: всі 3 поля мають бути числами, N > 0, а min має бути меншим або дорівнювати max
  74.             if (isNaN(N) || isNaN(min) || isNaN(max) || N <= 0 || min > max) {
  75.                 alert("Введено некоректні дані!"); // Виводимо попередження про некоректний ввід
  76.             } else {
  77.                 document.write("<h3>Результати для Рівня 3</h3>"); // Друкуємо заголовок Рівня 3
  78.                 RunTask1(N, min, max); // Викликаємо Завдання 1 з введеними користувачем межами min та max
  79.                 RunTask2(N, min, max); // Викликаємо Завдання 2 з введеними користувачем межами min та max
  80.             }
  81.         }
  82.  
  83.         // Логіка виконання Завдання 1 (Одномірні масиви)
  84.         function RunTask1(N, min, max) {
  85.             let A = []; // Створюємо порожній масив A
  86.             let B = []; // Створюємо порожній масив B
  87.             let C = []; // Створюємо порожній масив C для збереження результатів
  88.  
  89.             for (let i = 0; i < N; i++) { // Цикл виконується N разів (від 0 до N-1)
  90.                 A[i] = GetRandomInt(min, max); // Генеруємо i-й елемент масиву A
  91.                 B[i] = GetRandomInt(min, max); // Генеруємо i-й елемент масиву B
  92.                 C[i] = A[i] * A[i] - B[i] * B[i]; // Обчислюємо різницю квадратів A[i]^2 - B[i]^2 та записуємо в C[i]
  93.             }
  94.  
  95.             document.write("<h4>Завдання 1</h4>"); // Виводимо назву завдання
  96.             document.write("<p>Вихідний масив A: " + A.join(", ") + "</p>"); // Виводимо масив A через кому
  97.             document.write("<p>Вихідний масив B: " + B.join(", ") + "</p>"); // Виводимо масив B через кому
  98.             document.write("<p>Результат (масив C): " + C.join(", ") + "</p>"); // Виводимо результуючий масив C
  99.         }
  100.  
  101.         // Логіка виконання Завдання 2 (Двовимірний масив / Матриця)
  102.         function RunTask2(N, min, max) {
  103.             let matrix = []; // Створюємо порожній масив, який стане двовимірним
  104.             let product = 1; // Ініціалізуємо змінну для накопичення добутку (початкове значення 1)
  105.  
  106.             for (let i = 0; i < N; i++) { // Зовнішній цикл по рядках матриці (від 0 до N-1)
  107.                 matrix[i] = []; // Створюємо порожній масив для i-го рядка (робимо масив двовимірним)
  108.                 for (let j = 0; j < N; j++) { // Внутрішній цикл по стовпчиках (від 0 до N-1)
  109.                     matrix[i][j] = GetRandomInt(min, max); // Генеруємо випадкове число для комірки [i][j]
  110.                     if (i > j) { // Умова: елемент лежить суворо нижче головної діагоналі (номер рядка > номеру стовпчика)
  111.                         product *= matrix[i][j]; // Домножуємо елемент до підсумкового добутку
  112.                     }
  113.                 }
  114.             }
  115.  
  116.             document.write("<h4>Завдання 2</h4>"); // Виводимо назву завдання
  117.             document.write("<p>Вихідна матриця:</p>"); // Виводимо підпис до матриці
  118.             document.write("<table border='1' cellpadding='6' cellspacing='0' style='text-align: center;'>"); // Створюємо HTML-таблицю
  119.             for (let i = 0; i < N; i++) { // Цикл для створення рядків таблиці
  120.                 document.write("<tr>"); // Відкриваємо тег HTML-рядка <tr>
  121.                 for (let j = 0; j < N; j++) { // Цикл для створення комірок у кожному рядку
  122.                     document.write("<td>" + matrix[i][j] + "</td>"); // Виводимо значення комірки в тег <td>
  123.                 }
  124.                 document.write("</tr>"); // Закриваємо тег HTML-рядка </tr>
  125.             }
  126.             document.write("</table>"); // Закриваємо тег HTML-таблиці </table>
  127.             document.write("<p>Добуток елементів нижче головної діагоналі: " + product + "</p>"); // Друкуємо кінцевий результат
  128.         }
  129.     </script>
  130. </body>
  131. </html>
Advertisement
Add Comment
Please, Sign In to add comment