123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341 |
- // ДЗ: Циклы
- //1. while confirm +
- // Сделайте цикл с confirm, который продолжается по Отмена и заканчивается по ОК.
- /*{
- let i = 0;
- while (confirm("Введите что-то") === false) {
- i++
- }
- } */
- //2. array fill +
- // Создайте пустой массив и добавляйте в него элементы, пока пользователь не нажмет Отмена в очередном prompt.
- // Используйте push для удобства: push
- /*{
- const arr = [];
- let name;
- while (name = prompt("Введите любое имя")) {
- arr.push(name);
- }
- console.log(arr)
- } */
- // 3. array fill nopush +
- // Сделайте предыдущее задание, не используя push, а обращаясь к элементам по индексу.
- /*{
- const arr = [];
- let name;
- let i =0;
- while (name = prompt("Введите любое имя")) {
- arr[i] = name
- i++;
- }
- console.log(arr)
- } */
- // 4. infinite probability +
- // Создайте бесконечный цикл, который прерывается с помощью конструкции break, когда Math.random() > 0.9.
- // Код должен подсчитывать количество итераций и вывести это число с помощью alert.
- // {
- // let i = 0;
- // let j = Math.random();
- // while (j < 0.9) {
- // j = Math.random()
- // i++
- // if (j > 0.9) {
- // break
- // }
- // }
- // alert(`Число > 0.9 появилось на ${i} итерации.`)
- // }
- //5. empty loop +
- // Сделайте цикл с prompt, который прерывается по нажатию OK и продолжается по нажатию "Отмена"
- // c пустым телом цикла.
- /*{
- let i = 0;
- while (prompt("Введите что-то") === false) {
- }
- } */
- //6. progression sum +
- // Подсчитать сумму арифметической прогрессии от 1 до N c шагом 3 (1,4,7....) используя цикл for.
- // Метод Гаусса не применять, наоборот, сделать максимально наивное решение.
- // {
- // const n = prompt("Задайте число от 1 до n c шагом 3)
- // let x = 0;
- // for (let i = 1; i < n; i+=3){
- // x += i;
- // }
- // console.log(`Сумма всех чисел от 1 до ${n} шагом 3 - ${x}`)
- // }
- //7. chess one line +
- // Сформировать строку " # # # # # " с помощью цикла for. Длина строки может быть четной и нечетной,
- // и указывается в одном месте в коде.
- // {
- // let x = "#";
- // for (let i = 0; i < 10; i++){
- // x += " #";
- // }
- // console.log(x)
- // }
- // 8. numbers +
- // Сформировать строку c помощью вложенных циклов. Для перевода строки используйте \n.
- //
- // 0123456789
- // 0123456789
- // 0123456789
- // 0123456789
- // 0123456789
- // 0123456789
- // 0123456789
- // 0123456789
- // 0123456789
- // 0123456789
- //
- // {
- // let result = ""
- //
- // for (let i=0; i<10; ++i) {
- // let line = " "
- // for (let j=0; j<10; ++j) {
- // line += j
- // }
- // result += line + "\n"
- // }
- // console.log(result)
- // }
- // 9. chess +
- // Сформируйте строку с шахматной доской из вложенных циклов. Для перевода строки используйте \n. Код
- // должен поддерживать легкое изменение размеров доски.
- //
- // .#.#.#.#.#.#
- // #.#.#.#.#.#.
- // .#.#.#.#.#.#
- // #.#.#.#.#.#.
- // .#.#.#.#.#.#
- // #.#.#.#.#.#.
- // .#.#.#.#.#.#
- // #.#.#.#.#.#.
- // .#.#.#.#.#.#
- // #.#.#.#.#.#.
- // {
- // let result = ""
- //
- // for (let i=0; i<10; ++i) {
- // let line = ""
- // for (let j=0; j<10; ++j) {
- // line += i+j & 1 ? "#" : "."
- // }
- // result += line + "\n"
- // }
- // console.log(result)
- // }
- // 10. cubes +
- // Сформируйте массив из N элементов, содержащий в себе кубы индексов, т. е:
- //
- //[0,1,8,27,64...]
- // {
- // let arr = [];
- // let a = 1;
- // for (let i=0; i<15; i++) {
- // a = i**3;
- // arr.push(a)
- // }
- // console.log(arr)
- // }
- // 12. read array of objects -
- // Напишите функцию readArrayOfObjects, которая циклически добавляет в массив объекты, которые ввел пользователь.
- // Пользователь вводит ключи и значения (их в каждом объекте может быть любое количество), используя prompt.
- // Когда пользователь нажимает "Отмена" в окне prompt, ввод объекта заканчивается и объект добавляется в массив.
- // Перед вводом следующего объекта пользователю задается вопрос (используя confirm), хочет ли он продолжить это мучение
- // ввод объектов. При утвердительном ответе, опять работает ввод любюго количества ключей для создания нового объекта
- // Функция должна возвращать созданный массив с объектами.
- // const result = () => {
- // let arr = [];
- // let ask;
- // while (ask = confirm("Создадим объект")) {
- // while (ask === true) {
- // let obj = {};
- // obj[prompt("Введите ключ")] = prompt('Введите значение для ключа');
- // console.log(obj)
- // if (ask === false) {
- // break
- // }
- // }
- // }
- // }
- // result()
- // 13. ромбик +
- // Сформировать следующую строку - ромбик:
- //
- // .....#.....
- // ....###....
- // ...#####...
- // ..#######..
- // .#########.
- // ###########
- // .#########.
- // ..#######..
- // ...#####...
- // ....###....
- // .....#.....
- // let n = 10
- //
- // for(let i=1; i<=n; i++){
- // let str='';
- //
- // for(let j=n-i; j>0; j--){
- // str+=' ';
- // }
- //
- // for(let j=1; j<=i*2-1; j++){
- // str+='#';
- // }
- // console.log(str);
- // }
- //
- // for (let i=2; i<=n; i++){
- // let str='';
- //
- // for (let j=0; j<i-1; j++){
- // str+=' ';
- // }
- // for (let j=(n-i)*2+1; j>0; j--){
- // str+='#';
- // }
- // console.log(str);
- // }
- // 14. DOM: multiply table +
- // Сделать таблицу умножения, используя DOM createElement и innerText. Создайте таблицу, вложенные строки и ячейки
- // в циклах. Должно получится что-то вроде этого:
- // {
- // let table = document.getElementById("table");
- // document.body.append(table);
- //
- // for (let i = 1; i < 10; i++) {
- // let tr = document.createElement("tr");
- // table.appendChild(tr);
- // if (i % 2 === 0) {
- // tr.style.backgroundColor = 'lightgrey';
- // }
- // for (let j = 1; j < 10; j++) {
- // let td = document.createElement("td");
- // tr.appendChild(td);
- // td.innerText = i * j;
- // table.style.width = '30%';
- // table.style.border = 'black 2px'
- // }
- // }
- // }
- // const table = document.getElementById('table');
- //
- // for (let i = 0; i < 10; i++){
- // let tr = document.createElement('tr');
- // if (i % 2 === 1) {
- // tr.style.backgroundColor = 'lightgrey';
- // }
- // for (let j = 0; j < 10; j++){
- // const td = document.createElement('td');
- // let value = i * j;
- // if (value === 0) {
- // value = i || j;
- // }
- // td.innerHTML = value;
- // tr.appendChild(td);
- // }
- // table.appendChild(tr);
- // }
- // 15 DOM: highlight cell +
- // Подсветить ячейку, над которой находится курсор мыши. Используйте события mouseover и mouseout,
- // и style.backgroundColor для подсветки. Для того, что бы подсветить правильную ячейку, добавьте обработчики событий
- // во вложенный цикл, и используйте в них ту переменную, которая хранит <td>. В таком случае замыкания вам помогут.
- // Внимание: :hover это читерство :-)
- // const table = document.getElementById('table');
- //
- // for (let i = 0; i < 10; i++){
- // let tr = document.createElement('tr');
- // if (i % 2 === 1) {
- // tr.style.backgroundColor = 'lightgrey';
- // }
- // for (let j = 0; j < 10; j++){
- // const td = document.createElement('td');
- // let value = i * j;
- // if (value === 0) {
- // value = i || j;
- // }
- // td.innerHTML = value;
- // tr.appendChild(td);
- // }
- // table.appendChild(tr);
- // }
- //
- // table.onmouseover = function(event) {
- // let target = event.target;
- // target.style.background = 'lightblue';
- // };
- //
- // table.onmouseout = function(event) {
- // target = event.target;
- // target.style.background = '';
- // };
- // 16. DOM: Highlight cross +
- // Подсветить строку и столбец, в которой находится подсвеченная ячейка. Если у вас обработчики событий объявлены во
- // вложенном цикле, то вы можете пользоваться счетчиками цикла (обычно i и j) и другими переменными, например
- // переменной, содержащей в себе DOM-элемент строки.
- //
- // const table = document.getElementById('table');
- //
- // for (let i = 0; i < 10; i++){
- // const row = document.createElement('tr');
- // for (let j = 0; j < 10; j++){
- // const col = document.createElement('td');
- // let val = i * j;
- // if (val === 0) {
- // val = i || j;
- // }
- // col.innerHTML = val;
- // row.appendChild(col);
- // }
- // table.appendChild(row);
- // }
- //
- // table.onmouseover = function(event) {
- // let target = event.target;
- // target.style.background = 'pink';
- //
- // document.querySelectorAll(".highlight").forEach(
- // item => item.classList.remove("highlight")
- // );
- // target.closest("tr").classList.add("highlight");
- // target.closest("table").querySelectorAll("tr").forEach(
- // row => row.cells[target.cellIndex].classList.add("highlight")
- // );
- // };
- //
- // table.onmouseout = function(event) {
- // let target = event.target;
- // target.style.background = '';
- //
- // document.querySelectorAll(".highlight").forEach(
- // item => item.classList.remove("highlight")
- // );
- // };
|