//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("
красный
");
// case 'black':
// document.write(
// "черный
"
// );
// break;
// case 'blue':
// document.write("синий
");
// case 'green':
// document.write("зеленый
");
// break;
// default:
// document.write("Я не понял
");
// }
const switchIf = () => {
let color = prompt('Введите цвет', '');
if (color === 'red') {
document.write("красный
");
} else if (color === 'black') {
document.write(
"черный
"
);
} else if (color === 'blue') {
document.write("синий
");
} else if (color === 'green') {
document.write("Я не понял
");
}
};
//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();
}