11.2. Практикум

Примечание

При выполнении заданий используйте заготовки решений: -> Репозиторий.

Подробнее: см. Цикл выполнения и защиты заданий.

11.2.1. Настройки приложения

Написать приложение, которое запоминает количество собственных запусков, а также (для последнего запуска):

  • дату/время;

  • информацию об ОС;

и отображает время (количество секунд) с момента последнего запуска.

Дополнительная информация

Обычно пользователь ожидает, что приложение запомнит параметры своей работы (положение окна, незавершенные документы и т.д.) между сессиями - различными запусками приложения.

В современных приложениях настройки, как правило, хранятся в зависимости от операционной системы в:

В задаче рассматривается последний вариант, формат - JSON.

11.2.2. Игра «Набери наибольшую сумму»

Имеется колода из нескольких пронумерованных по порядку карт.

  1. Игроки определяют размер колоды (количество карт, на которых будет производиться игра), после чего все карты в случайном порядке располагаются на игральном столе в ряд рубашкой вверх.

  2. До тех пор, пока на столе остаются карты:

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

    2. После каждого выбора карты сдвигаются влево, чтобы занять место выбранной карты.

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

Реализуйте описанную игру.

11.2.3. Отчет о клиентах

Ольга работает менеджером в небольшой компании и продает страховые полисы 4-х типов: «Транспорт», «Недвижимость», «Путешествия», «Здоровье». Во время оформления полиса, клиенты самостоятельно заносят данные о себе в текстовый файл, после чего сводятся менеджером в один общий файл.

В конце отчетного периода руководство попросило Ольгу предоставить следующие показатели (ответить на вопросы):

  • список клиентов в алфавитном порядке и общую сумму продаж;

  • статистические показатели (среднее, мода и медиана) по сумме продаж;

  • статистические показатели (среднее и медиана) по возрасту клиентов;

  • какой тип полисов наиболее популярен?

  • какой тип полисов приносит наибольшую прибыль?

Открыв сводный файл Ольга обнаружила, что в результате того, что каждый клиент указывал данные в своем стиле (что сохранилось при копировании), задача не является тривиальной. Точно известно, что:

  1. Файл содержит данные в кодировке UTF-8.

  2. В каждой строке через разделитель (пробел или знак табуляции, один или несколько) записаны по очереди:

    1. ФИО клиента в произвольном регистре; в качестве разделителя может быть использован пробел или знак табуляции;

    2. Дата рождения:

      • день и месяц могут быть указаны с наличием/отсутствием ведущего 0;

      • год может содержать 2 или 4 цифры;

      • в качестве разделителя может быть использован один из символов '.', '/' или '-'.

    3. Тип полиса: «Транспорт», «Недвижимость», «Путешествия» или «Здоровье» (в произвольном регистре);

    4. Сумма: целое число.

Пример файла приведен на Рисунке 11.2.1.

_images/11_02_01.png

Рисунок 11.2.1 - Пример текстового файла с информацией о клиентах (точкой обозначен пробел, тире - знак табуляции)

Помогите Ольге обработать накопленные данные и предоставить руководству ответы на поставленные вопросы.