Olga_Brekhuntsova преди 3 години
родител
ревизия
7d7325bedf

+ 3 - 0
hw-js-01/.vscode/settings.json

@@ -0,0 +1,3 @@
+{
+  "liveServer.settings.port": 5501
+}

+ 19 - 7
hw-js-01/index.html

@@ -7,13 +7,25 @@
 </head>
 
 <body>
-    <!-- <script src="/js/task-1.js" type="module"></script> -->
-    <!-- <script src="/js/task-2.js" type="module"></script> -->
-    <!-- <script src="/js/task-3.js" type="module"></script> -->
-    <script src="/js/task-4.js" type="module"></script>
-    <!-- <script src="/js/task-5.js" type="module"></script> -->
-     <!-- <script src="/js/task-6.js" type="module"></script> -->
-    <!-- <script src="/js/table.js" type="module"></script> -->
+     <!-- <script src="/js/task-01.js" type="module"></script> -->
+    <!-- <script src="/js/task-02.js" type="module"></script> -->
+    <!-- <script src="/js/task-03.js" type="module"></script> -->
+    <!-- <script src="/js/task-04.js" type="module"></script> -->
+    <!-- <script src="/js/task-05.js" type="module"></script> -->
+     <!-- <script src="/js/task-06.js" type="module"></script> -->
+    <!-- <script src="/js/task-07.js" type="module"></script> -->
+    <!-- <script src="/js/task-08.js" type="module"></script> -->
+    <!-- <script src="/js/task-09.js" type="module"></script> -->
+    <!-- <script src="/js/task-10.js" type="module"></script> -->
+    <!-- <script src="/js/task-11.js" type="module"></script> -->
+    <!-- <script src="/js/task-12.js" type="module"></script> -->
+    <!-- <script src="/js/task-13.js" type="module"></script> -->
+    <!-- <script src="/js/task-14.js" type="module"></script> -->
+    <!-- <script src="/js/task-15.js" type="module"></script> -->
+    <!-- <script src="/js/task-16.js" type="module"></script> -->
+    <!-- <script src="/js/task-17.js" type="module"></script> -->
+    <!-- <script src="/js/task-18.js" type="module"></script> -->
+  
 </body>
 
 </html>

hw-js-01/js/task-1.js → hw-js-01/js/task-01.js


+ 1 - 1
hw-js-01/js/task-2.js

@@ -1,6 +1,6 @@
 // Перепишите пример выше, используя if-else
 var color = prompt("Введите цвет", "");
-// document.write не работал в Live Server. заменила на insertAdjacentHTML
+// document.write не работает из js файла (из index.html работает). Заменила на insertAdjacentHTML
 
 // switch (color){
 //     case "red":

hw-js-01/js/task-3.js → hw-js-01/js/task-03.js


+ 8 - 3
hw-js-01/js/task-4.js

@@ -19,7 +19,12 @@
 
 // Ex.1
 // let a = 2;
-// while (a) 
-//     console.log(a);
+// while (a)  
+//     console.log(a); 
+//консоль лог попал в тело цикла
 
-//  Ex.2
+//  Ex.2
+let a = 2
+    + prompt("Сколько чашек кофе ты сегодня выпил?");
+    //сшивает переменную с промпт вместо того, чтобы отдельно присваивать а=2 и приводить промпт к числу
+console.log(a);

+ 11 - 0
hw-js-01/js/task-05.js

@@ -0,0 +1,11 @@
+// Number: age
+// С помощью prompt спросить у пользователя его возраст и подсчитать год рождения. 
+// Год рождения вывести с помощью alert.
+const now = new Date();
+const thisYear = now.getFullYear();
+const vangaBall = String.fromCodePoint(128302);
+let age = +prompt(`Ща угадаю твой год рождения ${vangaBall}  Тебе сколько годиков-то?`);
+
+while (!age) { age = +prompt("Да ладно, не стесняйся! все ж свои. Пиши скока лет") };
+const bDay=confirm("А День Рождения был в этом году?");
+bDay?alert(`Вииииижу.... рождён ты в ${thisYear - age} году`):alert(`Вииииижу.... рождён ты в ${thisYear - age-1} году`);

+ 22 - 0
hw-js-01/js/task-06.js

@@ -0,0 +1,22 @@
+// Number: temperature
+// С помощью prompt спросить у пользователя температуру в градусах Цельсия и перевести их в Фаренгейты 
+// и / или наоборот.
+let degreesType = confirm(`Я нынче в ударе. Легко конвертну Цельсии в Фаренгейты и наоборот. У тебя что? "ок" - Цельсий, "Отмена"-Фаренгейт`);
+let degreesNumb = prompt(' Введи градусы и будет чудо');
+
+while (degreesNumb === null || degreesNumb === "" || isNaN(degreesNumb) ) {
+    degreesNumb = prompt('Фигню ввел. Давай еще разок')
+};
+degreesType ? alert(`В Фаренгейтах это ${Math.round(((degreesNumb * 9 / 5) + 32)*100)/100} градусов`) : alert(`В Цельсия это ${Math.round((degreesNumb - 32) / 9 * 5*100)/100} градусов`);
+
+while (confirm("Хочешь еще?")) {
+degreesType = confirm(`Что у тебя теперь? "ок" - Цельсий, "Отмена"-Фаренгейт`);
+    degreesNumb = prompt(' Введи градусы и я каааак конвертну!');
+    while (degreesNumb === null || degreesNumb === "" || isNaN(degreesNumb) ) {
+    degreesNumb = prompt('Фигню ввел. Давай еще разок')
+};
+degreesType ? alert(`В Фаренгейтах это ${Math.round(((degreesNumb * 9 / 5) + 32)*100)/100} градусов`) : alert(`В Цельсия это ${Math.round((degreesNumb - 32) / 9 * 5*100)/100} градусов`);
+}
+
+    
+

Файловите разлики са ограничени, защото са твърде много
+ 18 - 0
hw-js-01/js/task-07.js


+ 6 - 0
hw-js-01/js/task-08.js

@@ -0,0 +1,6 @@
+// Number: odd
+// С помощью prompt узнайте число, введенное пользователем. 
+// С помощью if проверьте, что число корректно преобразовано из строки.В случае ошибки выведите сообщение.
+//  Выведите четное число или нет, используя if.
+let numb = prompt('Введи число');
+if (isNaN(numb) || numb === null || numb === "") { alert('Это не число') } else { if (numb % 2) { alert(`Число ${numb} нечетное`) } else {alert(`Число ${numb} четное`)}};

+ 6 - 0
hw-js-01/js/task-09.js

@@ -0,0 +1,6 @@
+// String: greeting
+// Спросите у пользователя имя, и поприветствуйте его с помощью alert.
+
+//Проверку на непустую строку не делала. Это есть в рпедыдущих задачах.
+
+alert(`Aloha,  ${prompt('Как звать тебя, добрый человек?')}!`)

+ 18 - 1
hw-js-01/js/task-10.js

@@ -1,6 +1,23 @@
 // String: lexics
-// Спросите у пользователя текст, и проверьте его на наличие некорректного слова или нескольких некорректных слов. 
+// Спросите у пользователя текст, и проверьте его на наличие некорректного слова 
+//или нескольких некорректных слов.
 // Используйте метод indexOf(или includes) строки:
 // "123".indexOf("23") //возвращает 1 - позицию подстроки "23" в "123"
 // "abcdef".indexOf("ef") // 4
 // "12345".indexOf("some bad word") // -1 - не найдено
+
+// как я поняла, в нашей задаче есть 2 плохих слова: "23" и "ef"?
+
+const checkFnc = () => {
+    const phrase = phraseId.value;
+    if (phrase.indexOf('23') === -1) {
+        if (phrase.indexOf('ef') === -1) { alert('Все слова хорошие') }
+        else { alert(`Но-но-но, кто тут ругается? У тебя "ef" на ${phrase.indexOf('ef')+1}-м месте`) }
+    } else {alert(`Но-но-но, кто тут ругается? У тебя "23" на ${phrase.indexOf('23')+1}-м месте`) }
+};
+document.body.insertAdjacentHTML("afterbegin", "<section id=task10 style='display:inline-block'></section>");
+task10.insertAdjacentHTML("beforeend", "<form id=checkForm style='display:inline-block;'></form>");
+checkForm.insertAdjacentHTML("beforeend", "<h2 style='margin-left:auto; margin-right:auto'>Он-лайн цензор</h2>");
+checkForm.insertAdjacentHTML("beforeend", "<input id=phraseId placeholder='Введи текст'>");
+checkForm.insertAdjacentHTML("beforeend", "<button id=checkBtn type='button' style='display:block; margin-left:auto; margin-right:auto; margin-top:20px'>Вызвать цензора</button>");
+checkBtn.onclick = checkFnc;

+ 6 - 1
hw-js-01/js/task-11.js

@@ -1,2 +1,7 @@
 // confirm
-// Поэкспериментируйте с confirm, определите тип данных, который он возвращает, и конкретные значения этого типа данных.
+// Поэкспериментируйте с confirm, определите тип данных, который он возвращает, 
+// и конкретные значения этого типа данных.
+console.log(confirm("Хочешь сладких апельсинов?"));
+// ok - true
+// отмена - false
+// console.log(typeof confirm("Хочешь сладких апельсинов?")) - boolean

+ 5 - 1
hw-js-01/js/task-12.js

@@ -1,3 +1,7 @@
 // Boolean
 // Напишите код, который спрашивает те или иные вопросы с ответом "да" / "нет" с помощью confirm,
-// и сохраняет ответы в переменных.
+// и сохраняет ответы в переменных.
+const wantOranges = confirm("Хочешь сладких апельсинов?");
+const wantTales = confirm("Хочешь вночь рассказов длинных?");
+const wantNeighboursMurder = confirm("Хочешь, я убью соседей, что мешают спать?");
+console.log(`Хочу апельсинов: ${wantOranges}; хочу рассказов длинных: ${wantTales}; хочу смерти соседей: ${wantNeighboursMurder}`);

+ 4 - 1
hw-js-01/js/task-13.js

@@ -1,4 +1,7 @@
 // Boolean: if
 // Расширьте предыдущее задание условиями по полученным переменным условиями(if else).Например,
 // если вы спрашиваете пол пользователя с помощью confirm,
-// то по условию сделайте alert("Вы женщина") и alert("Вы мужчина")
+// то по условию сделайте alert("Вы женщина") и alert("Вы мужчина")
+
+const wantOranges = confirm("Хочешь сладких апельсинов?");
+if (wantOranges) {alert("Сорри, закончились((") } else { alert("Прекрасный выбор!") };

+ 29 - 2
hw-js-01/js/task-14.js

@@ -1,10 +1,37 @@
 // Array: real
-// Понаходите в вашей жизни вещи, которые похожи на массивы, и другие вещи, которые можно смоделировать с помощью массивов.
+// Понаходите в вашей жизни вещи, которые похожи на массивы, и другие вещи, 
+// которые можно смоделировать с помощью массивов.
+
+// дниНедели=[пн, вт, ср, чт, пт, сб, вс], 
+// распорядокДня = [проснуться, почистить зубы, одеться, ....заснуть], 
+// модельГоловы = [череп, нос, мозг]
+
 // Array: booleans
 // Создайте массив с переменными из заданий Boolean и Boolean if.
+const questions = ["Хочешь сладких апельсинов?", "Хочешь вночь рассказов длинных?", "Хочешь, я убью соседей, что мешают спать?"];
+console.log(questions);
+
 // Array: plus
 // Напишите код, который складывает первые два элемента массива и заносит это в элемент с индексом 2. 
 // Исследуйте полученный массив.
+
+const arr = [];
+let sum = 0;
+const length = +prompt(`Введите количество элементов массива`);
+for (let i = 0; i < length; i++) { arr[i] = +prompt(`Введите число, ${i+1}-ый элемент массива`); sum += arr[i] };
+arr.push(sum);
+console.log(arr);
+
 // Array: plus string
 // Что будет, если в предыдущий примере использовать строки вместо чисел ? Сделайте версию для сложения 3х значений.
-// Подумайте, зачем нужна эта возможность в наших примерах.
+// Подумайте, зачем нужна эта возможность в наших примерах.
+
+const arrStr = [];
+let sumStr = "";
+const lengthStr = +prompt(`Введите количество слов в предложении`);
+for (let i = 0; i < lengthStr; i++) {
+    arrStr[i] = prompt(`Введите ${i + 1}-ое слово`);
+    sumStr += " " + arrStr[i]
+};
+arrStr.push(sumStr); 
+console.log(arrStr);

+ 17 - 3
hw-js-01/js/task-15.js

@@ -1,6 +1,20 @@
 // Object: real
-// Найдите те или иные реальные объекты и найдите их свойства.Например у маркера это цвет, толщина, уровень зарядки
-// (количество краски), у автомобиля - бренд, модель, мощность двигателя, цвет и так далее.Создайте объекты с помощью { }. 
+// Найдите те или иные реальные объекты и найдите их свойства.Например у маркера это цвет, толщина,
+// уровень зарядки (количество краски), у автомобиля - бренд, модель, мощность двигателя,
+// цвет и так далее. Создайте объекты с помощью { }.
 // В качестве образца посмотрите объект персоны из материала предыдущего занятия
+
+const chocolate = {
+    name: "Alenka",
+    proteins: 4.9,
+    carbohydrates: 61,
+    fats: 31,
+    kkal: 550
+}
+
 // Object: change
-// Поменяйте значения свойств в ваших объектах, используя [] и . и присвоения.
+// Поменяйте значения свойств в ваших объектах, используя [] и . и присвоения.
+
+chocolate["name"] = "Serezhka";
+chocolate.kkal = 600;
+console.log(chocolate);

+ 41 - 1
hw-js-01/js/task-16.js

@@ -2,6 +2,46 @@
 // Сделайте перевод перевод из нашей системы размеров в американскую или любую на выбор. 
 // Используйте prompt, условия сравнения и alert.
 
+// сразу сделала через выкатывающийся список и объект. prompt - слишком ограниченный функционал, 
+// условия сравнения - не поняла, для чего он. Размер везде вычесляемое поле с шагом 2. 
+// Имеется в виду, что нужно не вычислять, а подставлять? делать 7 if?
+
+const coatSizes = { Russian: 40, German: 34, France: 36, Italy: 38, "Great Britain": 8, USA: 6 };
+const substituteFnc = () => {
+    const fromCountry = initialCountryId.value;
+    const sizesLength = 8;
+    const sizesArray = [];
+    sizesArray[0] = coatSizes[fromCountry];
+    for (let i = 1; i < sizesLength; i++) { sizesArray[i] = sizesArray[0] + i * 2};
+    const sizesStr = sizesArray.map(item => "<option value="+item+">" + item +"</option>");
+    initialSizeId.innerHTML=sizesStr;
+convertedSizeId.innerHTML = "---";
+};
+function countSizeFnc () {
+    const fromCountry = initialCountryId.value;
+    const toCountry = convertedCountryId.value;
+    const initialSize = initialSizeId.value;
+    convertedSizeId.innerHTML = coatSizes[toCountry] + (initialSize - coatSizes[fromCountry]);
+    
+};
+
+document.body.insertAdjacentHTML("afterbegin", "<section id=task16 style='display:inline-block'></section>");
+task16.insertAdjacentHTML("beforeend", "<form id=sizeForm style='display:inline-block;'></form>");
+sizeForm.insertAdjacentHTML("beforeend", "<h2 style='margin-left:auto; margin-right:auto'>Конвертор размеров верхней одежды</h2>");
+sizeForm.insertAdjacentHTML("beforeend", "<div id=countries></div>");
+sizeForm.insertAdjacentHTML("beforeend", "<div id=sizes style='margin-top:20px'></div>");
+countries.insertAdjacentHTML("beforeend", "<span>From </span>");
+countries.insertAdjacentHTML("beforeend", "<select id=initialCountryId><option value='hide'> -- Enter initial country --</option><option value='Russian'>Russian</option><option value='German'>German</option><option value='France'>France</option><option value='Italy'>Italy</option><option value='Great Britain'>Great Britain</option><option value='USA'>USA</option></select> ");
+countries.insertAdjacentHTML("beforeend", "<span> to </span>");
+countries.insertAdjacentHTML("beforeend", "<select id=convertedCountryId><option value='hide'> -- Enter converted country --</option><option value='Russian'>Russian</option><option value='German'>German</option><option value='France'>France</option><option value='Italy'>Italy</option><option value='Great Britain'>Great Britain</option><option value='USA'>USA</option></select> ");
+sizes.insertAdjacentHTML("beforeend", "<select id=initialSizeId style='display:inline-block; width:150px; margin-left:40px'><option value='hide'> -- Enter size --</option></select> ");
+sizes.insertAdjacentHTML("beforeend", "<output id=convertedSizeId name='result' for='sizeBtn' style='display:inline-block; text-align:center; width:150px; border: 1px solid green; border-radius:3px; margin-left:30px'>---</output>");
+sizeForm.insertAdjacentHTML("beforeend", "<button id=sizeBtn type='button' style='display:block; margin-left:auto; margin-right:auto; margin-top:20px'>Convert</button>");
+sizeBtn.onclick = countSizeFnc;
+initialCountryId.onchange = substituteFnc;
+
 
 // Comparison: object
-// Подумайте о том, как можно применить объекты к предыдущем заданию.
+// Подумайте о том, как можно применить объекты к предыдущем заданию.
+
+// Сразу подумала. if - это капец 8)

+ 3 - 1
hw-js-01/js/task-17.js

@@ -1,3 +1,5 @@
 // Ternary
 // Спросите у пользователя пол(confirm).Выведите с помощью alert "Вы мужчина" или "Вы женщина". 
-// Сделайте это оператором alert.Используйте тернарный оператор.
+// Сделайте это оператором alert.Используйте тернарный оператор.
+
+alert(confirm('У тебя есть борода?') ? "Ты мужчина ... хотя это не точно" : "Ты женщина... хотя это не точно");

+ 13 - 3
hw-js-01/js/task-18.js

@@ -1,4 +1,14 @@
 // Синий пояс Number: flats
-// Сделайте калькулятор, который позволит вам исходя из информации о количества этажей в доме и количества квартир 
-// на этаже находить подъезд и этаж определенной квартиры по её номеру.Например для 9этажного дома по 4 квартиры 
-// на этаж 81 квартира находится на 3м этаже третьего подъезда.
+// Сделайте калькулятор, который позволит вам исходя из информации о количества этажей в доме 
+// и количества квартир.
+// на этаже находить подъезд и этаж определенной квартиры по её номеру.
+// Например для 9этажного дома по 4 квартиры на этаж 81 квартира находится на 3м этаже третьего подъезда.
+
+const floors = +prompt("Введите количество этажей в доме");
+const entrances = +prompt("Введите количество подъездов в доме");
+const flats = +prompt("Введите количество квартир на одном этаже");
+const totalFlatsNumber = flats * floors*entrances;
+const searchFlat = +prompt(`Введите номер квартиры, который хотите найти. (не более ${totalFlatsNumber})`);
+const searchEntrance = Math.ceil(searchFlat/(flats*floors));
+const searchFloor = Math.ceil(searchFlat%(flats*floors)/flats);
+alert(`Квартира ${searchFlat} находится в  ${searchEntrance}-м подъезде на  ${searchFloor}-м этаже.`);

+ 0 - 2
hw-js-01/js/task-5.js

@@ -1,2 +0,0 @@
-// Number: age
-// С помощью prompt спросить у пользователя его возраст и подсчитать год рождения. Год рождения вывести с помощью alert.

+ 0 - 2
hw-js-01/js/task-6.js

@@ -1,2 +0,0 @@
-// Number: temperature
-// С помощью prompt спросить у пользователя температуру в градусах Цельсия и перевести их в Фаренгейты и/или наоборот.

+ 0 - 2
hw-js-01/js/task-7.js

@@ -1,2 +0,0 @@
-// Number: divide
-// Сделайте калькулятор для расчета деления нацело двух чисел. Используйте Math.floor или альтернативы.

+ 0 - 4
hw-js-01/js/task-8.js

@@ -1,4 +0,0 @@
-// Number: odd
-// С помощью prompt узнайте число, введенное пользователем. 
-// С помощью if проверьте что число корректно преобразовано из строки.
-// В случае ошибки выведите сообщение Выведите четное число или нет, используя if.

+ 0 - 2
hw-js-01/js/task-9.js

@@ -1,2 +0,0 @@
-// String: greeting
-// Спросите у пользователя имя, и поприветствуйте его с помощью alert.

+ 2 - 0
hw-js-01/readme.md

@@ -0,0 +1,2 @@
+Каждая задача в отдельном скрипте, чтобы удобнее было проверять.
+Для проверки нужно раскоментить скрипт в index.html.