Задание на лабораторную работу

Как выполнять лабораторную работу

Скачайте архив с заданием на первую лабораторную работу.

Откройте IntelliJ IDEA (предварительно установите плагин EduTools), выберите пункт Learn and Teach -> Import Local Course

Выберите архив с заданием

Откройте задание с помощью кнопки Open

Задание на лабораторную работу состоит из 7 задач, которые необходимо решить

Для решения каждой задачи требуется написать код для метода и вернуть правильное значение. Условие работы метода описано в правой части окна. После написания кода, нажмите кнопку Check, чтобы проверить, правильно ли вы реализовали метод.

Пример выполнения лабораторной работы

Давайте рассмотрим выполнение лабораторной работы на примере первой задачи.

Нам необходимо реализовать метод sleepIn(). Согласно условию задачи, метод принимает на вход булеву переменную weekday (будний ли день) и переменную vacation (отпуск или нет).

Давайте нажмем кнопку Check и посмотрим, что произойдет.

Как мы видим, изначально задача не решена, нам необходимо корректно реализовать метод.

Согласно условию задачи, метод возвращает true, если выходной или отпуск. Очевидно, что код метода будет выглядеть следующим образом.

public boolean sleepIn(boolean weekday, boolean vacation) {
    return !weekday || vacation;
}

Проверим правильность написания кода.

Ура, задача решена. Для успешной сдачи лабораторной работы необходимо выполнить все 7 задач.

Условия задач

На всякий случай, продублируем условия задач на первую лабораторную работу

1. Метод sleepIn()

Метод sleepIn() принимает решение о том, необходимо ли нам проснуться или можно еще поспать. Нужно проснуться, если будний день и нет отпуска

  • Параметр weekday определяет, будний ли день

  • Параметр vacation определяет, отпуск или нет

Метод возвращает true, если можно еще поспать и false в обратном случае

2. Метод closeToTen()

Дано два числа, метод closeToTen() возвращает число, которое наиболее близко к 10. Если оба числа равноблизки к 10, то метод возвращает 0.

Подсказка: используйте метод Math.abs() для получения абсолютного значения числа. Пример:

  • closeToTen(8, 13) -> 8 (число 8 ближе к 10)

  • closeToTen(8, 11) -> 11 (число 11 ближе к 10)

  • closeToTen(13, 7) -> 0 (оба числа равноблизки к 10)

3. Метод reverseArray()

Метод принимает на вход массив и возвращает массив в обратном порядке

Пример:

  • reverseArray([1,2,3]) -> [3,2,1]

  • reverseArray([7,0,0]) -> [0,0,7]

4. Метод biggestArray()

Метод принимает на вход два массива и возвращает массив, сумма элементов которого больше. Если суммы элементов массивов равны, метод возвращает первый массив.

Пример:

  • biggestArray([1,2,3], [1,2,4]) -> [1,2,4]

  • biggestArray([1,5,10], [15]) -> [1,5,10]

  • biggestArray([2,4,6], [10,2]) -> [2,4,6]

5. Метод seriesUp()

Метод принимает на вход число n >=0. Метод возвращает массив по шаблону {1, 1,2, 1,2,3, ...1,2,3..n}. Длина итогового массива = n*(n+1)/2

Пример:

  • seriesUp(3) -> [1, 1, 2, 1, 2, 3]

  • seriesUp(4) -> [1, 1, 2, 1, 2, 3, 1, 2, 3, 4]

  • seriesUp(2) -> [1, 1, 2]

6. Метод canSplit()

Дан непустой массив. Метод возвращает true, если массив можно разбить на две части (необязательно равные) таким образом, чтобы сумма частей была равна.

Пример:

  • canSplit([1, 1, 1, 2, 1]) -> true ([1,1,1] [2,1])

  • canSplit([2, 1, 1, 2, 1]) -> false

  • canSplit([10, 1, 2, 3, 4]) -> true ([10] [1,2,3,4])

7. Метод scoresIncreasing()

Дан массив, метод возвращает true если каждый элемент массива равен или больше предыдущему

Пример:

  • scoresIncreasing([1, 3, 4]) -> true

  • scoresIncreasing([1, 3, 2]) -> false

  • scoresIncreasing([1, 1, 4]) -> true

Проект - игра "Крестики-нолики"

Реализуйте игру "Крестики-нолики". В игру играют два человека, поочередно вводя координаты поля, куда необходимо поставить крестик или нолик. Ввод происходит в формате [строка] [столбец]. Например: 0 0 или 1 2.

Сценарий игры будет примерно следующим

---------
|       |
|       |
|       |
---------
First player: 0 0
---------
| X     |
|       |
|       |
---------
Second player: 1 1
---------
| X     |
|   0   |
|       |
---------
First player: 0 1
---------
| X X   |
|   0   |
|       |
---------
Second player: 2 2
---------
| X X   |
|   0   |
|     0 |
---------
First player: 0 2
First player won!

Process finished with exit code 0

Ниже представлен возможный вариант метода для отрисовки поля. В данном случае подразумевается, что в двумерном массиве число 0 соответствует пустому полю, число 1 соответствует X, а число - 1 соответствует 0.

Main.java
    public static void drawField(int[][] array) {
        System.out.println("---------");
        for (int i = 0; i < 3; i++) {
            System.out.print("| ");
            for (int j = 0; j < 3; j++) {
                String symbol = " ";
                if (array[i][j] != 0)
                    symbol = array[i][j] == 1 ? "X" : "0";
                System.out.print(symbol + " ");
            }
            System.out.println("|");
        }
        System.out.println("---------");
    }

Блок-схема алгоритма программы может быть примерно следующей.

В качестве дополнительного задания необходимо предусмотреть метод для проверки корректности ввода: можно ставить крестик или нолик только в свободную ячейку, а также отслеживать выход за пределы поля при указании номера строки и столбца.

Если пользовательский ввод оказался некорректным, то программа просит игрока повторить ход.

Last updated