December 17, 2024

Java: junior. Практическое задание

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

Текстовый файл с примерами кода задачи будет прикреплен к посту 👉Telegram

Следите за обновлениями и удачного программирования! 🚀


Задача 1.

Описание

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

Формат ввода

Одна строка, состоящая из типа фигуры (круг или квадрат) и опционально — измерения (радиус для круга или длина стороны для квадрата). Они разделены пробелом.

Измерение может быть как целым, так и вещественным числом.
Если измерение не указано, оно должно приниматься по умолчанию за 1.

Формат вывода

Два числа: сначала площадь, затем периметр фигуры, разделенные пробелом. Оба числа отформатированы с точностью до двух знаков после точки. Например:

8.00 12.01

Пример 1

Входные данные: круг 3

Выходные данные: 28.27 18.85

Пример 2

Входные данные: квадрат

Выходные данные: 1.00 4.00

Code:

Пояснение к коду:

  1. Разделение ввода:
    Входная строка разделяется на части с помощью пробела. Переменная shape хранит тип фигуры, а size содержит измерение.
  2. Обработка значения по умолчанию:
    Если размер не указан, он по умолчанию принимает значение 1.0.
  3. Вычисление параметров фигуры:
    • Для "круг" используются формулы с Math.PI.
    • Для "квадрат" площадь и периметр вычисляются с помощью простого умножения.
  4. Форматирование вывода:
    Результат форматируется с точностью до двух знаков после точки с использованием String.format().


Задача 2.

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

  1. Переворот строки.
  2. Удаление всех цифр из строки.
  3. Замена всех пробелов на подчёркивания (_).
  4. Вставка последовательности LOG в начало строки.

Затем система должна выводить обработанную строку.

Формат ввода:

Одна строка, состоящая из различных латинских буквенных и числовых символов, а также пробелов. Длина строки — от 2 до 100 символов.

Формат вывода:

Одна строка — исходная строка, к которой применили последовательность операций из условия задачи.

Пример 1

Входные данные: Hello World 123

Выходные данные: LOG_dlroW_olleH

Пример 2:

Входные данные: 12345678

Выходные данные: LOG

Code:

Пояснение к коду:

  1. Удаление цифр:
    line.replaceAll("[0-9]", "") удаляет все цифры из входной строки.
  2. Переворот строки:
    new StringBuilder(noDigits).reverse().toString() переворачивает очищенную строку.
  3. Замена пробелов:
    reversed.replace(" ", "_") заменяет все пробелы на подчёркивания (_).
  4. Добавление LOG:
    Конкатенация LOG с модифицированной строкой.

Пример тестирования:

Входные данные: Hello World 123

Шаги:

  1. Удалить цифры → Hello World
  2. Перевернуть → dlroW olleH
  3. Заменить пробелы → dlroW_olleH
  4. Добавить LOGLOG_dlroW_olleH

Выходные данные: LOG_dlroW_olleH

Входные данные: 12345678

Шаги:

  1. Удалить цифры → (пустая строка)
  2. Перевернуть → (пустая строка)
  3. Заменить пробелы → (пустая строка)
  4. Добавить LOGLOG

Выходные данные: LOG

Входные данные: H1E2L3L4O5

Шаги:

  1. Удалить цифры → HELLO
  2. Перевернуть → OLLEH
  3. Заменить пробелы → OLLEH
  4. Добавить LOGLOG_O_L_L_E_H

Выходные данные: LOG_O_L_L_E_H


Задача 3.

Вы работаете над модулем внутрикорпоративной системы учёта данных сотрудников компании. Программа должна:

  1. Найти сотрудника с минимальным возрастом.
  2. Вычислить медианный возраст всех сотрудников.
  3. Найти сотрудника с максимальным возрастом.

Медиана — число, которое находится в середине упорядоченного набора чисел. Если чисел чётное количество, медианой считается среднее значение двух средних чисел, округлённое до целого.

Формат ввода:

Одна строка — данные сотрудников.
Данные включают имя, возраст и отдел, разделённые запятой, без пробелов. Информация о каждом сотруднике разделена точкой с запятой.

Количество сотрудников: от 2 до 100.

Формат вывода:

Одна строка, содержащая три целых числа, разделённых пробелом:
минимальный возраст, медианный возраст и максимальный возраст.

Пример 1

Входные данные: Иван,28,Инженер;Олег,34,HR;Денис,45,Маркетинг;Анна,30,Инженер;Борис,24,HR Выходные данные: 24 30 45

Пример 2

Входные данные: Павел,28,Инженер;Елена,34,Маркетинг Выходные данные: 28 31 34

Code:

Ключевое объяснение:

  1. Парсинг ввода:
    • Разделите входную строку на записи о сотрудниках с помощью split(";").
    • Извлеките возраст для каждой записи, разделяя строку ещё раз с помощью split(",").
  2. Сортировка:
    • Добавьте все возраста в список и используйте Collections.sort() для их сортировки.
  3. Минимум и максимум:
    • Минимальный возраст — это первый элемент в отсортированном списке.
    • Максимальный возраст — это последний элемент в отсортированном списке.
  4. Вычисление медианы:
    • Если количество сотрудников чётное, медиана — это среднее значение двух центральных чисел (округлённое).
    • Если количество сотрудников нечётное, медиана — это центральное значение в списке.
  5. Форматированный вывод:
    • Объедините результаты (минимальный, медианный и максимальный возраст) в одну строку с помощью String.format().