Лягинсков Игорь ИТ-5 Лабораторная №1
Задание 1: Базовые методы и ввод данных
Задача 1: Дробная часть Текст задачи: Дана сигнатура метода: public double fraction (double x); Необходимо реализовать метод таким образом, чтобы он возвращал только дробную часть числа х. Подсказка: вещественное число может быть преобразовано к целому путем отбрасывания дробной части.
Алгоритм решения:
- Принять вещественное число на вход
- Преобразовать число к целому типу (отбросить дробную часть)
- Вычесть целую часть из исходного числа
- Вернуть полученную дробную часть
Задача 2: Сумма последних цифр Текст задачи: Дана сигнатура метода: public int sumLastNums (int x); Необходимо реализовать метод таким образом, чтобы он возвращал результат сложения двух последних знаков числах, предполагая, что знаков в числе не менее двух.
Алгоритм решения:
- Взять абсолютное значение числа (для работы с отрицательными числами)
- Получить последнюю цифру:
число % 10
- Получить предпоследнюю цифру:
(число % 100) / 10
- Сложить полученные цифры
- Вернуть результат
Задача 6: Проверка заглавной буквы Текст задачи: Дана сигнатура метода: public bool isUpperCase (char x); Необходимо реализовать метод таким образом, чтобы он принимал символ x и возвращал true, если это большая буква в диапазоне от ‘A’ до ‘Z’.
Алгоритм решения:
- Получить символ на вход
- Проверить условие: символ >= 'A' И символ <= 'Z'
- Вернуть true если условие выполняется, иначе false
Задача 7: Проверка вхождения в диапазон Текст задачи: Дана сигнатура метода: public bool isInRange (int a, int b, int num); Метод принимает левую и правую границу (a и b) некоторого числового диапазона. Необходимо реализовать метод таким образом, чтобы он возвращал true, если num входит в указанный диапазон (включая границы). Обратите внимание, что отношение a и b заранее неизвестно (неясно кто из них больше, а кто меньше)
Алгоритм решения:
- Определить минимальную и максимальную границы диапазона
- Проверить, что число >= минимальной границы И число <= максимальной границы
- Вернуть результат проверки
Задача 10: Многократное сложение последних цифр Текст задачи: Дана сигнатура метода: public int lastNumSum(int a, int b) Необходимо реализовать метод таким образом, чтобы он считал сумму цифр двух чисел из разряда единиц. Выполните с его помощью последовательное сложение пяти чисел и результат выведите на экран. Постарайтесь выполнить задачу, используя минимально возможное количество вспомогательных переменных.
Алгоритм решения:
- Для первого числа: получить первую цифру (делением на 10 пока число >= 10)
- Для второго числа: получить последнюю цифру (остаток от деления на 10)
- Сложить полученные цифры
- Повторить шаги 1-3 для следующих пар чисел
- Вернуть финальный результат
Задание 2: Условные операторы и строки
Задача 1: Модуль числа Текст задачи: Дана сигнатура метода: public int abs (int x); Необходимо реализовать метод таким образом, чтобы он возвращал модуль числа х (если оно было положительным, то таким и остается, если он было отрицательным – то необходимо вернуть его без знака минус).
Алгоритм решения:
- Проверить знак числа
- Если число >= 0, вернуть его без изменений
- Если число < 0, умножить на -1 и вернуть
Задача 4: Строка сравнения Текст задачи: Дана сигнатура метода: public String makeDecision (int x, int y); Необходимо реализовать метод таким образом, чтобы он возвращал строку, которая включает два принятых методом числа и корректно выставленный знак операции сравнения (больше, меньше, или равно).
Алгоритм решения:
- Сравнить два числа между собой
- Если первое > второго: сформировать строку "число1 > число2"
- Если первое = второму: сформировать строку "число1 == число2"
- Если первое < второго: сформировать строку "число1 < число2"
- Вернуть полученную строку
Задача 5: Тройной максимум Текст задачи: Дана сигнатура метода: public int max3 (int x, int y, int z); Необходимо реализовать метод таким образом, чтобы он возвращал максимальное из трех полученных методом чисел. Подсказка: идеальное решение включает всего две инструкции if и не содержит вложенных if.
Алгоритм решения:
- Сравнить первое число со вторым и третьим
- Если первое число максимальное - вернуть его
- Иначе сравнить второе и третье числа
- Вернуть большее из них
Задача 8: Форматирование возраста Текст задачи: Дана сигнатура метода: public String age (int x); Необходимо реализовать метод таким образом, чтобы он возвращал строку, в которой сначала будет число х, а затем одно из слов: год года лет Слово “год” добавляется, если число х заканчивается на 1, кроме числа 11. Слово “года” добавляется, если число х заканчивается на 2, 3 или 4, кроме чисел 12, 13, 14. Слово “лет”добавляется во всех остальных случаях. Подсказка: оператор % позволяет получить остаток от деления.
Алгоритм решения:
- Проанализировать последнюю цифру числа и само число
- Если последняя цифра = 1 И число ≠ 11: использовать "год"
- Если последняя цифра = 2,3,4 И число ≠ 12,13,14: использовать "года"
- Во всех остальных случаях: использовать "лет"
- Сформировать и вернуть строку
Особенности: учет исключений для чисел 11-14
Задача 9: День недели Текст задачи: Дана сигнатура метода: public String day (int x); Метод принимает число x, обозначающее день недели. Необходимо реализовать метод таким образом, чтобы он возвращал строку, которая будет обозначать текущий день недели, где 1- это понедельник, а 7 – воскресенье. Если число не от 1 до 7 то верните текст “это не день недели”. Вместо if в данной задаче используйте switch.
Алгоритм решения:
- Проверить входное число в операторе switch
- Для значений 1-7 вернуть соответствующий день недели
- Для всех других значений вернуть сообщение об ошибке
Задание 3: Циклы
Задача 2: Числа в обратном порядке Текст задачи: Дана сигнатура метода: public String reverseListNums (int x); Необходимо реализовать метод таким образом, чтобы он возвращал строку, в которой будут записаны все числа от x до 0 (включительно).
Алгоритм решения:
- Начать с числа x
- Пока число >= 0:
- Добавить число в результирующую строку
- Уменьшить число на 1
- Вернуть собранную строку
Задача 3: Четные числа Текст задачи: Дана сигнатура метода: public String chet (int x); Необходимо реализовать метод таким образом, чтобы он возвращал строку, в которой будут записаны все четные числа от 0 до x (включительно). Подсказа для обеспечения качества кода: инструкцию if использовать не следует.
Алгоритм решения:
- Начать с 0
- Циклом for с шагом 2 пройти до числа x
- На каждой итерации добавлять текущее число в строку
- Вернуть строку с четными числами
Задача 7: Квадрат из звездочек Текст задачи: Дана сигнатура метода: public void square (int x); Необходимо реализовать метод таким образом, чтобы он выводил на экран квадрат из символов ‘*’ размером х, у которого х символов в ряд и х символов в высоту.
Алгоритм решения:
- Для каждой строки от 0 до x-1:
- Создать строку из x символов '*'
- Вывести строку на экран
- Повторить для x строк
Задача 8: Левый треугольник Текст задачи: Дана сигнатура метода: public void leftTriangle (int x); Необходимо реализовать метод таким образом, чтобы он выводил на экран треугольник из символов ‘*’ у которого х символов в высоту, а количество символов в ряду совпадает с номером строки.
Алгоритм решения:
- Инициализировать пустую строку
- Для каждой строки от 1 до x:
- Добавить один символ '*' к строке
- Вывести текущую строку
- Таким образом каждая следующая строка длиннее предыдущей
Задача 10: Игра "Угадайка"
Текст задачи: Дана сигнатура метода: public void guessGame()
Необходимо реализовать метод таким образом, чтобы он генерировал
случайное число от 0 до 9, далее считывал с консоли введенное пользователем
число и выводил, угадал ли пользователь то, что было загадано, или нет. Метод
запускается до тех пор, пока пользователь не угадает число. После этого
выведите на экран количество попыток, которое потребовалось пользователю,
чтобы угадать число.
Алгоритм решения:
- Сгенерировать случайное число от 0 до 9
- Инициализировать счетчик попыток
- Пока число не угадано:
- Запросить ввод от пользователя
- Увеличить счетчик попыток
- Сообщить о результате попытки
- Когда число угадано - вывести статистику
Задание 4: Массивы
Задача 3: Максимальное по модулю Текст задачи: Дана сигнатура метода: public int maxAbs (int[] arr); Необходимо реализовать метод таким образом, чтобы он возвращал наибольшее по модулю (то есть без учета знака) значение массива arr.
Алгоритм решения:
- Предположить, что первый элемент - максимальный
- Пройти по всем элементам массива:
- Сравнить модуль текущего элемента с модулем текущего максимума
- Если модуль текущего элемента больше - обновить максимум
- Вернуть элемент с наибольшим модулем
Задача 4: Вставка в массив Текст задачи: Дана сигнатура метода: public int[]add (int[] arr, int x, int pos); Необходимо реализовать метод таким образом, чтобы он возвращал новый массив, который будет содержать все элементы массива arr, однако в позицию pos будет вставлено значение x.
Алгоритм решения:
- Проверить корректность позиции вставки
- Создать новый массив размером на 1 больше исходного
- Скопировать элементы до позиции вставки
- Вставить новый элемент на указанную позицию
- Скопировать оставшиеся элементы со смещением
- Вернуть новый массив
Задача 9: Все вхождения Текст задачи: Дана сигнатура метода: public int[] findAll (int[] arr, int x); Необходимо реализовать метод таким образом, чтобы он возвращал новый массив, в котором записаны индексы всех вхождений числа x в массив arr.
Алгоритм решения: 1.Первый проход: подсчитать количество вхождений элемента x 2.Создать массив размером, равным количеству вхождений 3.Второй проход: заполнить массив индексами найденных элементов 4.Вернуть массив индексов