|
|
|
|
<!DOCTYPE html>
|
|
|
|
|
<html lang="en">
|
|
|
|
|
<head>
|
|
|
|
|
<meta charset="UTF-8">
|
|
|
|
|
<title>Home Task #3. Prokhorova</title>
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
<script>
|
|
|
|
|
// Задание 1. Создать функцию calculate(operand1, operand2, sign), где operand1 и operand2 — два числа, sign — знак арифметической операции.
|
|
|
|
|
//Функция должна расчитывать результат операции, исходя из переданного ей знака.
|
|
|
|
|
//Функция должна проверять корректность введенных чисел и знака операции.
|
|
|
|
|
//Все аргументы для функции принять от пользователя.
|
|
|
|
|
function calculate(operand1, operand2, sign) {
|
|
|
|
|
var result;
|
|
|
|
|
if (isNaN(operand1) || isNaN(operand2) )
|
|
|
|
|
{
|
|
|
|
|
alert("One of arguments is not a number!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
switch (sign) {
|
|
|
|
|
case "+" : {
|
|
|
|
|
result = operand1 + operand2;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case "-" : {
|
|
|
|
|
result = operand1 - operand2;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case "/" : {
|
|
|
|
|
result = operand1 / operand2;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case "*" : {
|
|
|
|
|
result = operand1 * operand2;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
default: {
|
|
|
|
|
alert("Unsupported operation!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
var operand1 = +prompt("Enter number:");
|
|
|
|
|
var operand2 = +prompt("Enter number:");
|
|
|
|
|
var sign = prompt("Enter sign:");
|
|
|
|
|
result = calculate(operand1, operand2, sign);
|
|
|
|
|
if (result != undefined) {
|
|
|
|
|
alert(result);
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
// 2. Создать функцию, возводящую число в степень, число и сама степень вводится пользователем.
|
|
|
|
|
var number = +prompt('Enter number:');
|
|
|
|
|
var power = +prompt('Enter power:');
|
|
|
|
|
function abs(val) {
|
|
|
|
|
if (val < 0) {
|
|
|
|
|
return -val;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
return val;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
function fun1(a,b) {
|
|
|
|
|
if (b == 0) {
|
|
|
|
|
return 1;
|
|
|
|
|
} else if (b == 1) {
|
|
|
|
|
return a;
|
|
|
|
|
}
|
|
|
|
|
var r = 1;
|
|
|
|
|
for (var n = 0; n < abs(b); n++) {
|
|
|
|
|
r = r * a;
|
|
|
|
|
}
|
|
|
|
|
if (b < 0) {
|
|
|
|
|
return 1 / r;
|
|
|
|
|
}
|
|
|
|
|
return r;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
alert(fun1(number, power));
|
|
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
// 3. Создать игру "Камень-Ножницы-Бумага".
|
|
|
|
|
// Выбор компьютера определяется строкой:
|
|
|
|
|
// var computerChoice = Math.random();
|
|
|
|
|
// alert(computerChoice);
|
|
|
|
|
// Math.random() выдает произвольное число в промежутке от 0 до 1, на основании этого можно построить принцип выбора решения компьютера.
|
|
|
|
|
function getRandomInt(min, max) {
|
|
|
|
|
return Math.floor(Math.random() * (max - min)) + min;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function play() {
|
|
|
|
|
do {
|
|
|
|
|
pcChoice = getRandomInt(0, 3);
|
|
|
|
|
|
|
|
|
|
switch (pcChoice) {
|
|
|
|
|
case 0:
|
|
|
|
|
alert("stone!");
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
alert("scissors!");
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
alert("paper!");
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
alert("Sum Ting Wong!");
|
|
|
|
|
}
|
|
|
|
|
question = confirm("Another one?");
|
|
|
|
|
} while (question);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
play();
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
// 4. Напишите функцию, которая возвращает n-е число Фибоначчи. Для решения используйте цикл.
|
|
|
|
|
// бонус: для решения использовать не цикл, а рекурсию
|
|
|
|
|
function fibo(n) {
|
|
|
|
|
var f = 0, p = 1, c;
|
|
|
|
|
if (n <= 0) {
|
|
|
|
|
return NaN;
|
|
|
|
|
} else if (n == 1) {
|
|
|
|
|
return f;
|
|
|
|
|
} else if (n == 2) {
|
|
|
|
|
return p;
|
|
|
|
|
}
|
|
|
|
|
for (var i = 0; i < n - 2; i++) {
|
|
|
|
|
c = f + p;
|
|
|
|
|
f = p;
|
|
|
|
|
p = c;
|
|
|
|
|
}
|
|
|
|
|
return c;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
n = +prompt("Enter n:");
|
|
|
|
|
alert(fibo(n));
|
|
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
<script>
|
|
|
|
|
// 4. бонус: для решения использовать не цикл, а рекурсию
|
|
|
|
|
var f = 0, p = 1;
|
|
|
|
|
|
|
|
|
|
function fibor(f, p, n) {
|
|
|
|
|
if (n <= 0) {
|
|
|
|
|
return NaN;
|
|
|
|
|
} else if (n == 1) {
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var c = f + p;
|
|
|
|
|
n -= 1;
|
|
|
|
|
f = p;
|
|
|
|
|
p = c;
|
|
|
|
|
if (n - 2 > 0) {
|
|
|
|
|
c = fibor(f, p, n);
|
|
|
|
|
}
|
|
|
|
|
return c;
|
|
|
|
|
}
|
|
|
|
|
n = +prompt("Enter n:");
|
|
|
|
|
alert(fibor(f, p, n));
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|