Browse Source

i've done homewerok 2 js Omelchienk Hryhorii

unknown 3 years ago
parent
commit
12cdbb4ed3
2 changed files with 474 additions and 0 deletions
  1. 10 0
      html-css/index.html
  2. 464 0
      javascript/hw1.js

+ 10 - 0
html-css/index.html

@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en" lang="uk">
+	<head>
+		<meta charset="UTF-8" />
+		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
+		<title>Document-js</title>
+	</head>
+	<body></body>
+	<script src="../javascript/hw1.js" type="module"></script>
+</html>

+ 464 - 0
javascript/hw1.js

@@ -0,0 +1,464 @@
+//switch: sizes
+//Сделайте задание Comparison: sizes из предыдущего ДЗ используя switch
+
+const changeSystem = () => {
+	const value = prompt(
+		'write down size of jeans in measure USA from 6 to 16',
+		''
+	);
+	if (value.trim() === '') return changeSystem();
+	let usaSystemToRussian;
+	switch (Number(value)) {
+		case 6:
+			usaSystemToRussian = 40;
+			break;
+		case 8:
+			usaSystemToRussian = 42;
+			break;
+		case 10:
+			usaSystemToRussian = 44;
+			break;
+		case 12:
+			usaSystemToRussian = 46;
+			break;
+		case 14:
+			usaSystemToRussian = 48;
+			break;
+		case 16:
+			usaSystemToRussian = 50;
+			break;
+		default:
+			usaSystemToRussian = null;
+	}
+	usaSystemToRussian
+		? alert(`size in Ukraine equal to ${usaSystemToRussian}`)
+		: changeSystem();
+};
+
+//switch: if
+//Перепишите пример ниже, используя if.
+// let color = prompt('Введите цвет', '');
+// switch (color) {
+// 	case 'red':
+// 		document.write("<div style='background-color: red;'>красный</div>");
+// 	case 'black':
+// 		document.write(
+// 			"<div style='background-color: black; color: white;'>черный</div>"
+// 		);
+// 		break;
+// 	case 'blue':
+// 		document.write("<div style='background-color: blue;'>синий</div>");
+// 	case 'green':
+// 		document.write("<div style='background-color: green;'>зеленый</div>");
+// 		break;
+// 	default:
+// 		document.write("<div style='background-color: gray;'>Я не понял</div>");
+// }
+
+const switchIf = () => {
+	let color = prompt('Введите цвет', '');
+	if (color === 'red') {
+		document.write("<div style='background-color: red;'>красный</div>");
+	} else if (color === 'black') {
+		document.write(
+			"<div style='background-color: black; color: white;'>черный</div>"
+		);
+	} else if (color === 'blue') {
+		document.write("<div style='background-color: blue;'>синий</div>");
+	} else if (color === 'green') {
+		document.write("<div style='background-color: gray;'>Я не понял</div>");
+	}
+};
+
+//prompt: or
+//Для задания Number: age используя ИЛИ || вывести сообщение об ошибке (alert)
+//если пользователь не введет возраст или нажмет отмену
+//(т.е.prompt выдаст пустую строку или null, интерпретируемую как false).
+
+const age = (message) => {
+	const value = prompt(`How old are you ${message}`);
+	if (value === null || value.trim() === '') return;
+	Number(value)
+		? alert(`you was born in ${new Date().getFullYear() - value}`)
+		: age('? Please file field!!!');
+};
+
+//confirm: or this days
+//C помощью этого же трюка сделайте капризного робота, который в confirm
+//спрашивает "шопинг?", а в случае отказа - выводить alert "ты - бяка".
+
+const robotConfirm = () => {
+	const value = confirm(`Do you wanna shop?`);
+	switch (value) {
+		case false:
+			alert(`Are you coddled girl!!!`);
+			break;
+		case true:
+			alert(`Keep going daddy!!!`);
+			break;
+		default:
+			console.log(`whoops`);
+	}
+};
+
+//confirm: if this days
+//Сделать тоже самое с помощью if.
+
+const robotConfirmIf = () => {
+	const value = confirm(`Do you wanna shop?`);
+	if (value === false) {
+		alert(`are you coddled girl!!!`);
+	} else {
+		alert(`Keep going`);
+	}
+};
+
+//triple prompt
+//Трижды вызывать prompt, сохранить в переменные фамилию,
+//имя и отчество.Вывести ФИО c помощью alert.
+
+const triplePrompt = () => {
+	const secondName = prompt('Write down your second name please');
+	const firstName = prompt('write down your first name please');
+	const patronymic = prompt('write down  your patronymic please');
+	if (!secondName || !firstName || !patronymic) return triplePrompt();
+	alert(`${secondName} ${firstName} ${patronymic}`);
+};
+
+//default: or
+//Используя ИЛИ || добавьте имена по умолчанию, которые будут сохраняться во
+//внутренних переменных если пользователь ввел пустую строку или нажал
+//"Отмена".Например, если вы на шаге ввода Фамилии нажмете Escape, фамилия будет "Иванов"
+
+const triplePromptOr = () => {
+	const secondName = prompt('Write down your second name please') || 'Golovko';
+	const firstName = prompt('write down your first name please') || 'Svetlana';
+	const patronymic =
+		prompt('write down  your patronymic please') || 'Fedorovna';
+	alert(`${secondName} ${firstName} ${patronymic}`);
+};
+
+//default: if
+//Сделайте тоже самое с помощью if и else
+
+const triplePromptIf = () => {
+	const secondName = prompt('Write down your second name please');
+	const firstName = prompt('write down your first name please');
+	const patronymic = prompt('write down  your patronymic please');
+	if ((secondName, firstName, patronymic)) {
+		alert(`${secondName} ${firstName} ${patronymic}`);
+	} else {
+		alert('Zubenko Vladimir Viktorovich');
+	}
+};
+
+//login and password
+//Напишите код, который спрашивает логин, проверяет его на верность,
+//в случае если логин верен, просит ввести пароль и проверяет его.В случае
+//несовпадения логина или пароля выводить alert с текстом ошибки.
+//В случае успешного логина - alert с поздравлением.Правильные логин: admin и пароль: qwerty.Используйте вложенные if и else.
+
+const LogIn = () => {
+	const rightCredentials = {
+		login: 'Yaho',
+		password: 'Qwerty',
+	};
+	const login = prompt('Write down your login please', '');
+	const password = prompt('Write down your password please', '');
+	if (
+		login === rightCredentials.login &&
+		password === rightCredentials.password
+	) {
+		alert('Well done you are loged!');
+	} else {
+		alert('Wrong credentials');
+		LogIn();
+	}
+};
+
+//currency calc
+//Калькулятор обмена валют. Первый prompt спрашивает валюту:
+//"usd" или "eur".С помощью switch установите обменный курс для валюты,
+//выбранной пользователем, после чего спросите величину
+//и переведите её из гривны в выбранную на первом prompt валюту.Выведите результат в alert()
+
+const currencyCalc = () => {
+	let currency = prompt('Choose currency "usd" or "eur"');
+	switch (currency) {
+		case 'usd':
+			27;
+			currency = 27;
+			break;
+		case 'eur':
+			33;
+			currency = 33;
+			break;
+		default:
+			null;
+	}
+
+	const amountInGrn = prompt('Write down amount in grivnas', '');
+	console.log(Number(amountInGrn), currency);
+	Number(amountInGrn) && currency
+		? alert(`It will be ${Number(amountInGrn) / currency}`)
+		: currencyCalc();
+};
+
+//currency calc: improved
+//Улучшить предыдущее задание: сделать возможность ввода валюты
+//любыми буквами(usd, uSd, USD), используйте str.toLowerCase().
+
+const currencyCalcImprowed = () => {
+	let currency = prompt('Choose currency "usd" or "eur"');
+	switch (currency.toLowerCase()) {
+		case 'usd':
+			27;
+			currency = 27;
+			break;
+		case 'eur':
+			33;
+			currency = 33;
+			break;
+		default:
+			null;
+	}
+
+	const amountInGrn = prompt('Write down amount in grivnas', '');
+	console.log(Number(amountInGrn), currency);
+	Number(amountInGrn) && currency
+		? alert(`It will be ${Number(amountInGrn) / currency}`)
+		: currencyCalcImprowed();
+};
+
+//currency calc: two rates
+//Добавить к возможность выбора обменного курса на продажу и покупку.
+//Используйте confirm для ввода пользователя и тернарный оператор для величины курса.
+
+const currencyCalcTwoRates = () => {
+	const value = prompt('Choose currency "usd" or "eur"');
+	let currency;
+	switch (value.toLowerCase()) {
+		case 'usd':
+			27;
+			currency = 27;
+			break;
+		case 'eur':
+			33;
+			currency = 33;
+			break;
+		default:
+			null;
+	}
+
+	const amountInGrn = prompt('Write down amount in grivnas', '');
+	const selOrBay = confirm(
+		'confrim OK if you want bay or press cancel for sale'
+	);
+	Number(amountInGrn) && currency
+		? selOrBay
+			? alert(
+					`You will bay ${
+						Number(amountInGrn) / currency
+					}  ${value} on yor ${amountInGrn} grivnas`
+			  )
+			: alert(
+					`You need to sell ${
+						Number(amountInGrn) / (currency - 0.4)
+					}  ${value} to get ${amountInGrn} grivnas`
+			  )
+		: currencyCalcTwoRates();
+};
+
+//currency calc: if
+
+const currencyCalcTwoRatesIf = () => {
+	const value = (
+		prompt('Choose currency "usd" or "eur"', '') || ''
+	).toLowerCase();
+	let currency;
+
+	const amountInGrn = prompt('Write down amount in grivnas', '');
+	const selOrBay = confirm(
+		'confrim OK if you want bay or press cancel for sale'
+	);
+	if (value === 'usd') {
+		currency = 27;
+	} else if (value === 'eur') {
+		currency = 33;
+	}
+
+	Number(amountInGrn) && currency
+		? selOrBay
+			? alert(
+					`You will bay ${
+						Number(amountInGrn) / currency
+					}  ${value} on yor ${amountInGrn} grivnas`
+			  )
+			: alert(
+					`You need to sell ${
+						Number(amountInGrn) / (currency - 0.4)
+					}  ${value} to get ${amountInGrn} grivnas`
+			  )
+		: currencyCalcTwoRatesIf();
+};
+
+//scissors
+//Сделайте игру "камень-ножницы-бумага". Пользователь вводит свой вариант через prompt,
+//программа генерирует свой вариант через Math.random() и выводит через alert.
+//Следующий alert выводит имя победителя или "ничья"
+
+const scissorsGame = () => {
+	const value = prompt('Write down a number for play from 1 to 10', '');
+	Number(value) / 10 > Math.random(value)
+		? alert('You won')
+		: alert('You lost');
+};
+
+//Задание на синий пояс
+//Сделать задания обмена валют используя ассоциативный массив (объект)
+//подобной структуры.Добавьте дополнительные поля при надобности
+//.Для обращения к нужному полю используйте[].
+
+const currencyCalcTwoRatesBlueBelt = () => {
+	const ratios = {
+		usd: 25.6,
+		eur: 29,
+		different: 0.4,
+	};
+	const value = (
+		prompt('Choose currency "usd" or "eur"', '') || ''
+	).toLowerCase();
+	const currency = ratios[value];
+	const amountInGrn = prompt('Write down amount in grivnas', '');
+	const selOrBay = confirm(
+		'confrim OK if you want bay or press cancel for sale'
+	);
+
+	Number(amountInGrn) && currency
+		? selOrBay
+			? alert(
+					`You will bay ${
+						Number(amountInGrn) / currency
+					}  ${value} on yor ${amountInGrn} grivnas`
+			  )
+			: alert(
+					`You need to sell ${
+						Number(amountInGrn) / (currency - ratios.different)
+					}  ${value} to get ${amountInGrn} grivnas`
+			  )
+		: currencyCalcTwoRatesBlueBelt();
+};
+
+//real data
+//Иcпользуя заготовку ниже реализуйте перевод валют с реальными данными.
+
+const currencyCalcTwoRatesRealData = async () => {
+	try {
+		const ratios = await fetch('https://open.er-api.com/v6/latest/USD')
+			.then((res) => res.json())
+			.then(({ rates }) => rates);
+		const value = (
+			prompt('Choose currency "usd" or "eur"', '') || ''
+		).toUpperCase();
+		const currency = ratios[value];
+		const amountInGrn = prompt('Write down amount in grivnas', '');
+		const selOrBay = confirm(
+			'confrim OK if you want bay or press cancel for sale'
+		);
+
+		Number(amountInGrn) && currency
+			? selOrBay
+				? alert(
+						`You will bay ${Number(amountInGrn) / (ratios.UAH / currency)}
+						 ${value} on yor ${amountInGrn} grivnas`
+				  )
+				: alert(
+						`You need to sell ${
+							(currency - 0.05) / Number(amountInGrn)
+						}  ${value} to get ${amountInGrn} grivnas`
+				  )
+			: currencyCalcTwoRatesRealData();
+	} catch (e) {
+		currencyCalcTwoRatesRealData();
+	}
+};
+
+//Дополнительное задание
+//Слепить все задания в один текст, таким образом что бы вначале происходил ввод
+//названия задания, каждое задание при этом находится в отдельном case оператора
+//switch.Например case "currency calc" для калькулятора обмена валют.
+
+const adiditonalExercise = () => {
+	const expr = prompt(`Write down name of exercise`) || '';
+	switch (expr.toLowerCase()) {
+		case 'switch: sizes':
+			changeSystem();
+			break;
+		case 'switch: if':
+			switchIf();
+			break;
+		case 'prompt: or':
+			age('?');
+			break;
+		case 'confirm: or this days':
+			robotConfirm();
+			break;
+		case 'confirm: if this days':
+			robotConfirmIf();
+			break;
+		case 'triple prompt':
+			triplePrompt();
+			break;
+		case 'default: or':
+			triplePromptOr();
+			break;
+		case 'default: if':
+			triplePromptIf();
+			break;
+		case 'login and password':
+			LogIn();
+			break;
+		case 'currency calc':
+			currencyCalc();
+			break;
+		case 'currency calc: improved':
+			currencyCalcImprowed();
+			break;
+		case 'currency calc: two rates':
+			currencyCalcTwoRates();
+			break;
+		case 'currency calc: if':
+			currencyCalcTwoRatesIf();
+			break;
+		case 'scissors':
+			scissorsGame();
+			break;
+		case 'задание на синий пояс':
+			currencyCalcTwoRatesBlueBelt();
+			break;
+		case 'real data':
+			currencyCalcTwoRatesRealData();
+			break;
+		case 'задание на черный пояс':
+			blackBelt();
+			break;
+		case '':
+			adiditonalExercise();
+			break;
+		default:
+			alert(`We do not have exercise with it name ${expr}`);
+			adiditonalExercise();
+	}
+};
+adiditonalExercise();
+
+//Задание на черный пояс
+
+function blackBelt() {
+	const value = prompt('Write down a number for play from 1 to 10', '');
+	Number(value) !== NaN && value !== null
+		? Number(value) / 10 > Math.random(value)
+			? alert('You won')
+			: alert('You lost')
+		: blackBelt();
+}