Lavig

JS2

Sep 26th, 2026 (edited)
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <!DOCTYPE html> <!-- Декларація типу документа HTML5 -->
  2. <html lang="uk"> <!-- Початок HTML-документа, мова сторінки — українська -->
  3. <head> <!-- Блок із службовою інформацією про сторінку -->
  4.     <meta charset="UTF-8"> <!-- Встановлюємо кодування UTF-8 для коректного відображення кирилиці -->
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- Налаштування масштабу під мобільні пристрої -->
  6.     <title>Лабораторна робота 2</title> <!-- Текст, який відображається на вкладці браузера -->
  7. </head> <!-- Закриваємо блок head -->
  8. <body> <!-- Основне тіло сторінки, яке бачить користувач -->
  9.  
  10.     <button onclick="RunLevel1()">Запустити Рівень 1</button> <!-- Кнопка для запуску першого рівня -->
  11.     <button onclick="RunLevel2()">Запустити Рівень 2</button> <!-- Кнопка для запуску другого рівня -->
  12.     <button onclick="RunLevel3()">Запустити Рівень 3</button> <!-- Кнопка для запуску третього рівня -->
  13.  
  14.     <script> <!-- Початок блоку JavaScript-коду -->
  15.  
  16.         function Truncate(str, maxlength) { // Функція обрізання рядка до вказаної довжини
  17.             if (str == null || str.length <= maxlength) { // Якщо рядок відсутній або його довжина в межах норми
  18.                 return str; // Повертаємо початковий рядок без змін
  19.             } else { // Якщо довжина рядка більша за допустиму
  20.                 return str.slice(0, maxlength - 3) + "..."; // Вирізаємо початок і додаємо три крапки в кінці
  21.             } // Закриваємо блок else
  22.         } // Закриваємо функцію Truncate
  23.  
  24.         function RunLevel1() { // Головна функція для роботи з Рівнем 1
  25.             let inputStr = prompt("Введіть рядок:"); // Запитуємо у користувача вхідний рядок
  26.             let maxLen = parseInt(prompt("Введіть максимальну довжину (maxlength):")); // Отримуємо довжину і перетворюємо в число
  27.  
  28.             if (inputStr == null || inputStr == "" || isNaN(maxLen)) { // Перевірка: скасовано ввід, порожній рядок або не число
  29.                 alert("Введено некоректні дані!"); // Повідомляємо користувача про помилку введення
  30.             } else { // Якщо всі дані введено коректно
  31.                 let result = Truncate(inputStr, maxLen); // Викликаємо функцію Truncate для обрізання
  32.                 alert("Результат: " + result); // Виводимо оброблений результат у модальному вікні
  33.             } // Закриваємо блок else
  34.         } // Закриваємо функцію RunLevel1
  35.  
  36.         function GetAlphabeticalWords(str) { // Функція пошуку слів, де букви йдуть за алфавітом
  37.             let words = str.split(" "); // Розбиваємо вхідний рядок на масив окремих слів за пробілами
  38.             let result = []; // Створюємо порожній масив для збереження підходящих слів
  39.  
  40.             for (let i = 0; i < words.length; i++) { // Проходимо циклом по кожному слову в масиві
  41.                 let word = words[i]; // Беремо поточне слово за індексом i
  42.                 let cleanWord = word.toLowerCase(); // Переводимо слово в нижній регістр для однакового порівняння букв
  43.                 let isSorted = true; // Початковий прапорець: припускаємо, що букви в слові відсортовані
  44.  
  45.                 for (let j = 0; j < cleanWord.length - 1; j++) { // Порівнюємо кожну букву з наступною
  46.                     if (cleanWord[j].localeCompare(cleanWord[j + 1], "uk") > 0) { // Якщо поточна буква за алфавітом далі за наступну
  47.                         isSorted = false; // Фіксуємо, що алфавітний порядок порушено
  48.                         break; // Перериваємо перевірку поточного слова
  49.                     } // Закриваємо if
  50.                 } // Закриваємо цикл порівняння букв j
  51.  
  52.                 if (isSorted && cleanWord.length > 0) { // Якщо слово відсортоване і воно не порожнє
  53.                     result.push(word); // Додаємо початкове слово у підсумковий масив
  54.                 } // Закриваємо if
  55.             } // Закриваємо цикл перебору слів i
  56.             return result; // Повертаємо масив знайдених слів
  57.         } // Закриваємо функцію GetAlphabeticalWords
  58.  
  59.         function RunLevel2() { // Головна функція для роботи з Рівнем 2
  60.             let inputStr = prompt("Введіть рядок зі словами:"); // Запитуємо у користувача рядок слів
  61.  
  62.             if (inputStr == null || inputStr == "") { // Перевіряємо, чи користувач не натиснув Скасувати або не залишив пусте поле
  63.                 alert("Введено некоректні дані!"); // Виводимо повідомлення про помилку
  64.             } else { // Якщо рядок введено правильно
  65.                 let wordsArr = GetAlphabeticalWords(inputStr); // Шукаємо слова з буквами за алфавітом
  66.                 alert("Слова, де букви за алфавітом: " + wordsArr.join(", ")); // Перетворюємо масив у рядок через кому та виводимо
  67.             } // Закриваємо блок else
  68.         } // Закриваємо функцію RunLevel2
  69.  
  70.         function GetUniqueCharWords(str) { // Функція пошуку слів без повторюваних букв
  71.             let words = str.split(" "); // Розбиваємо текст на окремі слова за пробілами
  72.             let result = []; // Створюємо порожній масив для збереження результатів
  73.  
  74.             for (let i = 0; i < words.length; i++) { // Проходимо циклом по кожному слову
  75.                 let word = words[i]; // Отримуємо поточне слово
  76.                 let cleanWord = word.toLowerCase(); // Переводимо слово у нижній регістр
  77.                 let hasDuplicates = false; // Початковий прапорець: вважаємо, що дублікатів немає
  78.  
  79.                 for (let j = 0; j < cleanWord.length; j++) { // Зовнішній цикл: беремо базову букву
  80.                     for (let k = j + 1; k < cleanWord.length; k++) { // Внутрішній цикл: порівнюємо з усіма наступними буквами
  81.                         if (cleanWord[j] == cleanWord[k]) { // Якщо знайшли дві однакові букви
  82.                             hasDuplicates = true; // Фіксуємо наявність дубліката
  83.                             break; // Виходимо з внутрішнього циклу k
  84.                         } // Закриваємо if
  85.                     } // Закриваємо цикл k
  86.                     if (hasDuplicates) { // Якщо дублікат уже знайдено
  87.                         break; // Виходимо із зовнішнього циклу j (припиняємо перевіряти це слово)
  88.                     } // Закриваємо if
  89.                 } // Закриваємо цикл j
  90.  
  91.                 if (!hasDuplicates && cleanWord.length > 0) { // Якщо дублікатів не знайдено і слово не порожнє
  92.                     result.push(word); // Додаємо слово до підсумкового масиву
  93.                 } // Закриваємо if
  94.             } // Закриваємо цикл i
  95.             return result; // Повертаємо масив слів без повторюваних букв
  96.         } // Закриваємо функцію GetUniqueCharWords
  97.  
  98.         function RunLevel3() { // Головна функція для роботи з Рівнем 3
  99.             let inputStr = prompt("Введіть текст:"); // Запитуємо вхідний текст у користувача
  100.  
  101.             if (inputStr == null || inputStr == "") { // Перевіряємо на скасування чи порожній ввід
  102.                 alert("Введено некоректні дані!"); // Повідомляємо про помилку
  103.             } else { // Якщо текст успішно введено
  104.                 let wordsArr = GetUniqueCharWords(inputStr); // Отримуємо масив слів без дублікатів букв
  105.                 document.write("<p>Початковий рядок: " + inputStr + "</p>"); // Виводимо початковий текст прямо на сторінку
  106.                 document.write("<p>Слова без повторюваних букв:</p><ul>"); // Відкриваємо маркований HTML-список <ul>
  107.  
  108.                 for (let i = 0; i < wordsArr.length; i++) { // Проходимо циклом по всіх знайдених словах
  109.                     document.write("<li>" + wordsArr[i] + "</li>"); // Виводимо кожне слово як елемент списку <li>
  110.                 } // Закриваємо цикл виводу i
  111.                 document.write("</ul>"); // Закриваємо тег маркованого списку </ul>
  112.             } // Закриваємо блок else
  113.         } // Закриваємо функцію RunLevel3
  114.  
  115.     </script> <!-- Закриваємо блок JavaScript-коду -->
  116. </body> <!-- Закриваємо тіло HTML-документа -->
  117. </html> <!-- Закриваємо HTML-документ -->
Advertisement
Add Comment
Please, Sign In to add comment