Модуль 1

ТЕМА: ВВЕДЕНИЕ В JAVASCRIPT

Выполнить задания, используя функцию

1. Написать функцию, которая принимает 2 числа и возвращает меньшее из них.

    function compareNumbers (x:number, y:number) {
        return x > y ? y : x
    }       
    console.log(compareNumbers(10,20))

2. Написать функцию, которая возводит переданное число в указанную степень.

    function showNumberInPow (x:number, y:number) {
        return x**y
    }
    console.log (showNumberInPow(2,3))        

3. Написать функцию, которая принимает 2 числа и знак (+ - * /), считает пример и возвращает результат.

    function calculateNumbers(x:number, operator:string, y:number) {
        switch (operator) {
            case '+':
                return x + y
            case '-':
                return x - y
            case '*':
                return x * y
            case '/':
                return x / y
            default:
                return 'Введите правильно оператор'
        }
    }
    console.log(calculateNumbers(5, '+', 4));

4. Написать функцию, которая проверяет, является ли переданное ей число простым.

(Простое число делится только на единицу и само на себя)

function checkNumber (x:number) {
    let acc = 0
    for (let i = 2; i < x; i++) {  // диапазон чисел
        if (x%i==0) {              // делители числа
            acc++                  // количество делителей
        }
    }
    return acc>0 ? 'Число сложное' : 'Число простое';
}

console.log(checkNumber(6));

5. Написать функцию, которая принимает число и выводит таблицу умножения для этого числа. Вызовите функцию для всех чисел от 2 до 9.


function multiplyNumber (x:number) {
    for (let i = 2; i <=9; i++) {
        console.log(x * i)
    }
}
    
console.log(multiplyNumber(10))
    

6. Написать функцию, которая реализует работу оператора %. Функция принимает 2 параметра и возвращает остаток от деления первого параметра на второй. В функции использовать только + - * /, оператор % не использовать.

function showRemain (num1:number, num2:number) {
    let quantaty = Math.trunc(num1/num2)
    return num1 - quantaty*num2
}    
console.log(showRemain(11, 5));

7. Написать функцию, которая принимает от 1 до 5 чисел и возвращает их сумму.

function getSummNumbers(
    num1:number,
    num2=0,
    num3=0,
    num4=0,
    num5=0,
) {
    return num1 + num2 + num3 + num4 + num5
}    

console.log(getSummNumbers(5, 5, 6));

8. Написать функцию, которая принимает от 1 до 5 чисел и возвращает большее из них.

function findMaxNumber (
    num1:number,
    num2=-Infinity,
    num3=-Infinity,
    num4=-Infinity,
    num5=-Infinity,
) {
    return Math.max(num1, num2, num3, num4, num5)
}    
console.log(findMaxNumber(-19, -10, -12, -3, -2));

9. Написать функцию, которая выводит все четные или нечетные числа, в указанном пользователем диапазоне. Какие числа выводить, определяется третьим параметром типа bool (true – четные, false – нечетные).

function showEvenOddNumberInDiapazone (minNumber:number, maxNumber:number, bool:boolean) {
    for (let i = minNumber; i < maxNumber; i++) {
        if (i%2==0 && bool==true) { //находим четные числа
            console.log(i);   
        }
        if(i%2==1  && bool==false){
            console.log(i);   
        }
    } 
}

showEvenOddNumberInDiapazone(3, 19, true);

10. Написать функцию, которая принимает дату (день, месяц, год) и возвращает дату следующего дня в виде строки «дд.мм.гггг». Проверку на високосный год желательно написать отдельной функцией.

function returnNextDay(day:number, mounth:number, year:number) {
    if (day>=32) return 'Введите корректный день'
    if (day==31 && (mounth==4 || mounth==6 ||mounth==9 || mounth==11)) return 'Введите корректный день'
    if (day>=30 && mounth==2 || day==29 && mounth==2 && year%4!=0) return 'Введите корректный день'
    if (mounth>=13) return 'Введите корректный месяц'
    if (day<=0 || mounth<=0 || year<=0) return 'введите положительное число'

    if (day==31 && mounth==12){
        year+=1, mounth=1, day=1
    } else if (day==30 && (mounth==4 || mounth==6 ||mounth==9 || mounth==11)) {
        day=1
        mounth+=1
    } else if (day==31 && (mounth==3 || mounth==5 ||mounth==7 || mounth==8 || mounth==10 || mounth==12)) {
        day=1
        mounth+=1
    } else if(day==28 && mounth==2 && year%4!=0 || day==29 && mounth==2 && year%4==0){
        day=1
        mounth+=1
    } else {
        day+=1
    }

    return `«${day}.${mounth}.${year}»`
}

console.log(returnNextDay(31, 12, 2024));