Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="uk">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Лабораторна робота 3</title>
- </head>
- <body>
- <h3>Рівень 1</h3>
- <button type="button" onclick="GetData1()">Обчислити Рівень 1</button>
- <h3>Рівень 2</h3>
- <form name="form2">
- <label for="n2">Розмірність:</label>
- <input type="text" id="n2" name="n2"><br><br>
- <button type="button" onclick="GetData2()">Обчислити Рівень 2</button>
- </form>
- <h3>Рівень 3</h3>
- <form name="form3">
- <label for="n3">Розмірність N:</label>
- <input type="text" id="n3" name="n3"><br>
- <label for="min3">Мінімум:</label>
- <input type="text" id="min3" name="min3"><br>
- <label for="max3">Максимум:</label>
- <input type="text" id="max3" name="max3"><br><br>
- <button type="button" onclick="GetData3()">Обчислити Рівень 3</button>
- </form>
- <script>
- // Універсальна функція генерації випадкового цілого числа у діапазоні [min, max]
- function GetRandomInt(min, max) {
- // 1. (max - min + 1) — визначає кількість можливих варіантів чисел у діапазоні (включаючи min і max).
- // 2. Math.random() — дає дробове число від 0.0 до 0.999... (число 1.0 ніколи не випадає).
- // 3. Множення Math.random() * (max - min + 1) розтягує випадкове число на потрібний інтервал [0.0 ... N.999].
- // 4. Math.floor() — відкидає дробову частину (округлює до меншого цілого).
- // 5. + min — зсуває отримане ціле число від нуля до заданого мінімуму.
- return Math.floor(Math.random() * (max - min + 1)) + min;
- }
- // Обробник для Рівня 1 (зчитування через prompt)
- function GetData1() {
- let N = parseInt(prompt("Введіть розмірність:")); // Зчитуємо N через вспливаюче вікно prompt та перетворюємо текст у ціле число
- if (isNaN(N) || N <= 0) { // Перевірка: якщо введено не число (NaN) або число <= 0
- alert("Введено некоректні дані!"); // Виводимо модальне вікно з повідомленням про помилку
- } else {
- document.write("<h3>Результати для Рівня 1</h3>"); // Виводимо заголовок для Рівня 1 у документ
- RunTask1(N, 1, 9); // Викликаємо Завдання 1 з розмірністю N та фіксованим діапазоном 1..9
- RunTask2(N, 1, 9); // Викликаємо Завдання 2 з розмірністю N та фіксованим діапазоном 1..9
- }
- }
- // Обробник для Рівня 2 (зчитування розмірності з форми form2)
- function GetData2() {
- let N = parseInt(document.forms["form2"].elements["n2"].value); // Отримуємо значення з поля n2 форми form2 і конвертуємо в int
- if (isNaN(N) || N <= 0) { // Перевіряємо коректність введеного значення N
- alert("Введено некоректні дані!"); // Сповіщаємо користувача про помилку
- } else {
- document.write("<h3>Результати для Рівня 2</h3>"); // Друкуємо заголовок Рівня 2
- RunTask1(N, 1, 9); // Запускаємо Завдання 1 (діапазон 1..9)
- RunTask2(N, 1, 9); // Запускаємо Завдання 2 (діапазон 1..9)
- }
- }
- // Обробник для Рівня 3 (зчитування N, min, max з форми form3)
- function GetData3() {
- let N = parseInt(document.forms["form3"].elements["n3"].value); // Отримуємо N з текстового поля n3
- let min = parseInt(document.forms["form3"].elements["min3"].value); // Отримуємо min з текстового поля min3
- let max = parseInt(document.forms["form3"].elements["max3"].value); // Отримуємо max з текстового поля max3
- // Перевіряємо: всі 3 поля мають бути числами, N > 0, а min має бути меншим або дорівнювати max
- if (isNaN(N) || isNaN(min) || isNaN(max) || N <= 0 || min > max) {
- alert("Введено некоректні дані!"); // Виводимо попередження про некоректний ввід
- } else {
- document.write("<h3>Результати для Рівня 3</h3>"); // Друкуємо заголовок Рівня 3
- RunTask1(N, min, max); // Викликаємо Завдання 1 з введеними користувачем межами min та max
- RunTask2(N, min, max); // Викликаємо Завдання 2 з введеними користувачем межами min та max
- }
- }
- // Логіка виконання Завдання 1 (Одномірні масиви)
- function RunTask1(N, min, max) {
- let A = []; // Створюємо порожній масив A
- let B = []; // Створюємо порожній масив B
- let C = []; // Створюємо порожній масив C для збереження результатів
- for (let i = 0; i < N; i++) { // Цикл виконується N разів (від 0 до N-1)
- A[i] = GetRandomInt(min, max); // Генеруємо i-й елемент масиву A
- B[i] = GetRandomInt(min, max); // Генеруємо i-й елемент масиву B
- C[i] = A[i] * A[i] - B[i] * B[i]; // Обчислюємо різницю квадратів A[i]^2 - B[i]^2 та записуємо в C[i]
- }
- document.write("<h4>Завдання 1</h4>"); // Виводимо назву завдання
- document.write("<p>Вихідний масив A: " + A.join(", ") + "</p>"); // Виводимо масив A через кому
- document.write("<p>Вихідний масив B: " + B.join(", ") + "</p>"); // Виводимо масив B через кому
- document.write("<p>Результат (масив C): " + C.join(", ") + "</p>"); // Виводимо результуючий масив C
- }
- // Логіка виконання Завдання 2 (Двовимірний масив / Матриця)
- function RunTask2(N, min, max) {
- let matrix = []; // Створюємо порожній масив, який стане двовимірним
- let product = 1; // Ініціалізуємо змінну для накопичення добутку (початкове значення 1)
- for (let i = 0; i < N; i++) { // Зовнішній цикл по рядках матриці (від 0 до N-1)
- matrix[i] = []; // Створюємо порожній масив для i-го рядка (робимо масив двовимірним)
- for (let j = 0; j < N; j++) { // Внутрішній цикл по стовпчиках (від 0 до N-1)
- matrix[i][j] = GetRandomInt(min, max); // Генеруємо випадкове число для комірки [i][j]
- if (i > j) { // Умова: елемент лежить суворо нижче головної діагоналі (номер рядка > номеру стовпчика)
- product *= matrix[i][j]; // Домножуємо елемент до підсумкового добутку
- }
- }
- }
- document.write("<h4>Завдання 2</h4>"); // Виводимо назву завдання
- document.write("<p>Вихідна матриця:</p>"); // Виводимо підпис до матриці
- document.write("<table border='1' cellpadding='6' cellspacing='0' style='text-align: center;'>"); // Створюємо HTML-таблицю
- for (let i = 0; i < N; i++) { // Цикл для створення рядків таблиці
- document.write("<tr>"); // Відкриваємо тег HTML-рядка <tr>
- for (let j = 0; j < N; j++) { // Цикл для створення комірок у кожному рядку
- document.write("<td>" + matrix[i][j] + "</td>"); // Виводимо значення комірки в тег <td>
- }
- document.write("</tr>"); // Закриваємо тег HTML-рядка </tr>
- }
- document.write("</table>"); // Закриваємо тег HTML-таблиці </table>
- document.write("<p>Добуток елементів нижче головної діагоналі: " + product + "</p>"); // Друкуємо кінцевий результат
- }
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment