123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266 |
- // while confirm
- // Сделайте цикл с confirm, который продолжается по Отмена и заканчивается по ОК.
- {
- while (!confirm('Жми отмену!')) {
- alert('Опа, нежданчик! Тут магия зазеркалья')
- }
- }
- // array fill
- // Создайте пустой массив и добавляйте в него элементы, пока пользователь не нажмет Отмена в очередном prompt.Используйте push для удобства: push
- {
- const arr = []
- let item
- while (item !== null) {
- item = prompt('введи что-то для добавления в массив')
- if (item !== null) { arr.push(item) }
- else break
- }
- console.log(arr)
- }
- // array fill nopush
- // Сделайте предыдущее задание, не используя push, а обращаясь к элементам по индексу.
- {
- const arr = []
- let item, i = 0
- while (item !== null) {
- item = prompt('введи что-то для добавления в массив')
- if (item !== null) { arr[i] = item }
- else break;
- i++
- }
- console.log(arr)
- }
- // infinite probability
- // Создайте бесконечный цикл, который прерывается с помощью конструкции break, когда Math.random() > 0.9.Код должен подсчитывать количество итераций и вывести это число с помощью alert
- {
- let num = 0, i = 0
- while (num <= 0.9) {
- num = Math.random()
- console.log(`${i + 1}:`, num)
- if (num > 0.9) {
- break
- }
- i++
- }
- alert(`Всего было ${i + 1} итераций цикла`)
- }
- // empty loop
- // Сделайте цикл с prompt, который прерывается по нажатию OK и продолжается по нажатию "Отмена" c пустым телом цикла.
- {
- while (prompt('Жми') === null) { }
- }
- // progression sum
- // Подсчитать сумму арифметической прогрессии от 1 до N c шагом 3(1, 4, 7....) используя цикл for.Метод Гаусса не применять, наоборот, сделать максимально наивное решение.
- {
- const arr = []
- const length = +prompt('Введите количество членов арифметической прогрессии')
- for (let i = 0; i < length; i++) {
- arr.push(1 + i * 3)
- }
- console.log(arr.reduce((a, b) => a + b))
- }
- // chess one line
- // Сформировать строку " # # # # # " с помощью цикла for.Длина строки может быть четной и нечетной, и указывается в одном месте в коде.
- {
- const length = +prompt('Введите длину строки')
- let str = ''
- for (i = 0; i < length; i++) {
- str += (i % 2 ? '#' : ' ')
- }
- console.log(str)
- }
- // numbers
- // Сформировать строку c помощью вложенных циклов.Для перевода строки используйте \n.
- {
- let str = ''
- for (let i = 0; i < 10; i++) {
- for (let j = 0; j < 10; j++) {
- str += j;
- }
- str += '\n'
- }
- console.log(str);
- }
- // chess
- // Сформируйте строку с шахматной доской из вложенных циклов.Для перевода строки используйте \n.Код должен поддерживать легкое изменение размеров доски.
- {
- [row, column] = ['Введите количество строк в таблице', 'Введите количество столбцов в таблице'].map(prompt)
- let str = ''
- for (let i = 0; i < +row; i++) {
- for (let j = 0; j < +column; j++) {
- i % 2 ? str += (j % 2 ? '.' : '#') : str += (j % 2 ? '#' : '.')
- }
- str += '\n'
- }
- console.log(str)
- }
- // cubes
- // Сформируйте массив из N элементов, содержащий в себе кубы индексов, т.е: [0, 1, 8, 27, 64...]
- {
- const arr = []
- const length = +prompt('Введите длинну массива')
- for (let i = 0; i < length; i++) {
- arr.push(i ** 3)
- }
- console.log(arr)
- }
- // multiply table
- // C помощью вложенного цикла сформируйте массив массивов "таблица умножения". Для инициализации вложенных массивов используйте: arr[i] = []
- {
- const length = +prompt('Введите размер стороны таблицы Пифагора')
- let arr = []
- for (let i = 0; i < length; i++) {
- arr[i] = []
- for (let j = 0; j < length; j++) {
- arr[i].push(i * j)
- }
- arr.push(arr[i])
- }
- console.log(arr)
- console.log(arr[5][6] == 30)
- console.log(arr[7][2] == 14)
- }
- // read array of objects
- // Напишите функцию readArrayOfObjects, которая циклически добавляет в массив объекты, которые ввел пользователь.Пользователь вводит ключи и значения(их в каждом объекте может быть любое количество), используя prompt.Когда пользователь нажимает "Отмена" в окне prompt, ввод объекта заканчивается и объект добавляется в массив.Перед вводом следующего объекта пользователю задается вопрос(используя confirm), хочет ли он продолжить это мучение ввод объектов.При утвердительном ответе, опять работает ввод любюго количества ключей для создания нового объекта
- // Функция должна возвращать созданный массив с объектами.
- {
- let readArrayOfObjects = () => {
- const arr = []
- do {
- const obj = {}
- for (let key, value; ; obj[key] = value) {
- key = prompt('Введите ключ для объекта')
- if (key === null) {
- break
- }
- value = prompt('Введите значение ключа объекта')
- if (value === null) {
- break
- }
- }
- arr.push(obj)
- } while (confirm('Продолжаем ввод объектов?'))
- return arr
- }
- readArrayOfObjects()
- }
- // ромбик
- // Сформировать следующую строку - ромбик:
- {
- const length = prompt('Введите любое нечетное число')
- let str = ''
- for (let i = 0; i < length; i++) {
- for (let j = 0; j < length; j++) {
- if (i < length / 2) {
- !(j < (Math.floor(length / 2) - i) || j > (Math.floor(length / 2) + i)) ? str += '#' : str += '.'
- } else {
- !(j < (i - Math.floor(length / 2)) || j > length - (i - Math.floor(length / 2) + 1)) ? str += '#' : str += '.'
- }
- }
- str += '\n'
- }
- console.log(str)
- }
- // DOM: multiply table + highlight cell + Highlight cross
- // Сделать таблицу умножения, используя DOM createElement и innerText.Создайте таблицу, вложенные строки и ячейки в циклах.Должно получится что - то вроде этого:
- // Подсветить ячейку, над которой находится курсор мыши.Используйте события mouseover и mouseout, и style.backgroundColor для подсветки.Для того, что бы подсветить правильную ячейку, добавьте обработчики событий во вложенный цикл, и используйте в них ту переменную, которая хранит < td >.В таком случае замыкания вам помогут.
- // Подсветить строку и столбец, в которой находится подсвеченная ячейка.Если у вас обработчики событий объявлены во вложенном цикле, то вы можете пользоваться счетчиками цикла(обычно i и j) и другими переменными, например переменной, содержащей в себе DOM - элемент строки.
- {
- const length = +prompt('Введите размер стороны таблицы Пифагора')
- // создаем див-родитель для таблицы
- const div = document.createElement('div')
- document.body.append(div)
- // создаем тег table
- const multiplyTable = document.createElement('table')
- div.append(multiplyTable)
- // создаем тело таблицы
- for (let i = 1; i < length + 1; i++) {
- const row = document.createElement('tr')
- multiplyTable.append(row)
- for (let j = 1; j < length + 1; j++) {
- const col = document.createElement('td')
- col.style.cssText = `
- border: 1px solid grey;
- min-width: 1.3em;
- text-align: center;
- `
- row.append(col)
- col.innerText = `${i * j}`
- // подсветка строки
- col.addEventListener('mouseover', () => multiplyTable.rows[i - 1].style.backgroundColor = '#00FFFF')
- col.addEventListener('mouseout', () => multiplyTable.rows[i - 1].style.backgroundColor = 'transparent')
- // подсвета столбца
- col.addEventListener('mouseover', () => {
- for (let k = 1; k < length + 1; k++) {
- multiplyTable.rows[k - 1].cells[j - 1].style.backgroundColor = "#00FFFF"
- // console.log(multiplyTable.rows[k - 0])
- }
- })
- col.addEventListener('mouseout', () => {
- for (let k = 1; k < length + 1; k++) {
- multiplyTable.rows[k - 1].cells[j - 1].style.backgroundColor = "transparent"
- }
- })
- // подсветка элемента таблицы
- col.onmouseover = () => col.style.backgroundColor = '#FFFF00'
- col.addEventListener('mouseout', () => col.style.backgroundColor = 'transparent')
- }
- }
- }
|