# Задания для лабораторных работ

## 1. Дневник школьника

Приложение представляет собой мобильную версию дневника школьника.  
На главном экране приложения отображается расписание школьника на одну неделю. Приложение позволяет формировать расписание на текущую четверть, добавлять и удалять предметы (расписание занятий не изменяется в течение четверти).  
В отдельном окне осуществляется просмотр расписания на отдельный день: информация об уроках, задание по каждому из них, оценки, выставленные за данный урок.  
Приложение должно показывать средний балл успеваемости по каждому из предметов.

## 2. Игра Ним

Приложение позволяет пользователю играть с телефоном в игру Ним, в которой два игрока по очереди берут камни, разложенные на несколько кучек.  
За один ход может быть взято любое количество камней из одной кучки от 1 до некоторого заданного заранее числа `n`.  
Выигрывает игрок, взявший последний камень. Количество кучек и максимальное количество камней, которое можно взять из кучки, должно задаваться в настройках приложения.

## 3. Дневник потраченного времени

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

## 4. Менеджер личных финансов

Приложение позволяет вести учет личных финансовых операций.  
На главном экране приложения отображается текущее состояние личного счета и набор элементов, позволяющих провести типичную финансовую операцию (оплата проезда в общественном транспорте и т.п.). Набор типичных операций может быть изменен. Пользователь может провести произвольную операцию: по внесению и снятию средств. К каждой операции можно добавить информационное сообщение.  
Пользователь может просмотреть историю операций и график изменения баланса личного счета за текущий месяц.

## 5. Список покупок

Приложение позволяет управлять списками покупок.  
На главном экране приложения отображается текущий список покупок. Приложение должно позволять создавать, удалять, копировать списки покупок. Пользователь может добавить новый элемент к списку покупок, удалить элемент из списка, пометить элемент как купленный.  
Каждый элемент списка имеет следующие параметры: наименование и объем покупки с единицами измерения. Наименование и единица измерения выбираются из списка. Наименования редактируются на отдельном экране, где пользователь может их добавлять и удалять, а также задавать набор допустимых единиц измерения.

## 6. Личный дневник

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

## 7. Книга рецептов

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

## 8. Дневник прочтения книг

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

## 9. Менеджер паролей

Приложение позволяет генерировать пароли для различных целей.  
Приложение должно предоставлять доступ к списку записей с сохраненными паролями.  
Каждая запись должна иметь следующие данные: название (произвольное, например, название сайта или социальной сети и т.п.), имя пользователя (логин), пароль, URL ресурса (опционально), текстовую заметку.  
Сохраняемый пароль можно ввести вручную, а можно и сгенерировать автоматически.  
Генератор паролей должен позволять настраивать длину пароля, включать или выключать прописные буквы, строчные буквы, цифры и специальные символы.

## 10. Приложение для изучения английских слов

Приложение представляет собой инструмент для изучения английских слов различных тематик.  
Приложение должно иметь не менее 10-ти тематик для изучения. Приложение должно позволять пользователю изучать язык в режиме викторины: приложение показывает пользователю слово (русское или английское) и 4 варианта ответа. Приложение должно показывать пользователю не менее 10 вопросов за один проход по тематике. При этом общее число вопросов по каждой тематике должно быть не менее 30-ти. Вопросы при каждом новом проходе должны быть перемешаны.
Приложение должно позволять пользователю изучать как переводы английских слов на русский (английский в вопросе, русский в ответах), так и наоборот.
Приложение должно позволять пользователю просматривать статистику: доля изучения каждой из тематик в процентах и в абсолютном количестве вопросов.

## 11. Построитель графиков 

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

## 12. Приложение для отслеживания питьевого баланса

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

## 13. Игра Викторины

Приложение представляет собой набор викторин с различными тематиками.  
Приложение должно содержать не менее 10-ти викторин и позволять пользователю играть в каждую из них.  
Каждая игра в отдельную викторину должна иметь не менее 10-ти вопросов. При этом общее число вопросов по каждой тематике должно быть не менее 30-ти. Вопросы при каждой новой игре должны быть перемешаны.
Приложение должно позволять пользователю просматривать статистику: доля прохождения каждой из тематик в процентах и в абсолютном количестве вопросов.

## 14. Дневник просмотра кино

Приложения представляет собой личный дневник просмотра кино пользователя.  
Приложение должно отображать список фильмов, добавлять, удалять и редактировать фильмы, а также указывать их статус: "просмотрено", "буду смотреть".  
Записи фильмов должны иметь следующие данные: название, режиссер (если их несколько, необходимо дать пользователю возможность добавления нескольких режиссеров отдельными полями), жанр, год выпуска, постер. Постер можно загружать из памяти устройства. Для просмотренных фильмов пользователь может указать оценку от 1 до 10.  
Приложение должно позволять просматривать статистику просмотренных фильмов: среднюю оценку по жанрам, среднюю оценку по режиссерам.  
Приложение должно позволять фильтровать фильмы по году выпуска, жанру, режиссеру.

## 15. Дневник массы тела

Приложение позволяет пользователю вести записи об изменении массы тела.
Приложение должно позволять отображать, добавлять, редактировать и удалять записи об изменении массы тела. Каждая запись содержит следующие данные:
* Дата и время измерения,
* Масса в кг.,
* Изменение массы по сравнению с предыдущей записью (например, +0.1 кг. или -0.1 кг.),
* Индекс массы тела.

Записи отсортированы по дате и времени — более новые сверху. 

Индекс массы тела высчитывается по формуле индекса массы тела (отношение массы (в кг). к квадрату роста (в м.)), с использованием значения роста пользователя. Рост пользователя должен вводиться при первом запуске и храниться в настройках приложения.  
Приложение должно отображать статистику за: последнюю неделю, последний месяц, последний квартал, последний год. Статистика за каждый период должна содержать следующую информацию:
* Даты начала и конца периода,
* Среднее значение массы тела за период,
* Изменение по сравнению с предыдущим периодом,
* Среднее значение индекса массы тела за период.

## 16. Генератор случайных чисел

Приложение позволяет генерировать случайные числа различными способами.  
Приложение должно иметь несколько режимов: "Число", "Список", "Игральные кости", "Монетка", "Шар восьмерка".  
Режим "Число" должен позволять пользователю указывать диапазон чисел для генерации случайного в заданном диапазоне и настраивать количество генерируемых случайных чисел.  
Режим "Список" должен позволять пользователю составлять список из произвольного числа элементов с произвольным текстом для генерации случайного элемента в заданном списке. Также должен позволять настраивать количество генерируемых ответов.  
Режим "Игральные кости" должен позволять пользователю настраивать количество игральных костей и отображать их на экране.  
Режим "Монетка" должен отображать на экране монетку и позволять пользователю ее бросать.  
Режим "Шар восьмерка" должен позволять пользователю получать случайный из заранее заготовленных "ответов" оп типу одноименного шара.

## 17. Дневник диабетика

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

## 18. Планировщик ремонта

Приложение представляет собой помощник по планированию ремонта.  
Приложение должно отображать список комнат, добавлять, редактировать и удалять комнаты. 
Для каждой комнаты приложение должно позволять задавать размеры: высоту, длину, ширину. В зависимости от размеров комнаты, приложение должно рассчитывать: количество рулонов обоев по 10м, необходимых для оклейки стен (ширину обоев пользователь задает сам: 50см или 1м); количество ламината (в пачках, пользователь сам задает размеры одной доски и количество досок в одной пачке) или линолеума (в квадратных метрах). Кроме этого пользователь должен иметь возможность вносить собственные записи о необходимых материалах. Каждая запись должна иметь следующие данные: наименование, единицы измерения, количество. 

## 19. Дневник влюбленных

Приложение позволяет пользователю отслеживать важные моменты в отношениях со второй половинкой.  
Приложение должно позволять пользователю указать свое имя и имя второй половинки, дату начала совместных отношений, загрузить фотографии.  
Приложение должно отображать количество проведенных вместе дней, недель, месяцев, лет; количество дней до ближайшей годовщины.  
Приложение должно позволять пользователю создавать, редактировать и удалять "моменты". Каждый "момент" — это запись в списке "моментов". Каждая запись "момента" должна содержать следующие данные: дату и время, местоположение, текстовую заметку, а также один из заранее подготовленных типов событий (например, свидание, кино, театр, путешествия, сюрприз, цветы и т.д.).  
Приложение должно отображать статистику событий пользователя по моментам за неделю, месяц, квартал, год (например, количество походов в кино за год, или количество путешествий за квартал и т.д.).

## 20. Планировщик подарков

Приложение представляет собой помощник по планированию подарков.  
Приложение должно иметь список возможных получателей и возможных подарков для них, который можно редактировать (добавлять и удалять получателей, добавлять, редактировать и удалять потенциальные подарки).  
Приложение должно позволять создавать, редактировать и удалять записи в списке планов. Каждый "план" должен содержать следующие данные: дату, праздник (например, День рождения, 8 марта и т.п.), получателя подарка (например, сестра, папа, жена и т.п.), подарок с его стоимостью.  
При добавлении и редактировании "плана" приложение должно позволять выбирать получателя из числа добавленных ранее или добавить нового в список. В зависимсости от выбранного получателя приложение должно позволять выбирать подарок из списка добавленных ранее или добавить новый в список.  
Приложение должно отображать список "планов" на главной странице приложение и группировать "планы" по датам.

## 21. Инженерный калькулятор

Приложение-калькулятор должно позволять выполнять следующие операции:

* Сложение,
* Вычитание,
* Умножение,
* Деление,
* Вычисление процента от числа,
* Вычисление факториала числа,
* Возможность указания выражения в скобках,
* Вычисление квадратной степени числа,
* Возведение числа в произвольную степень,
* Вычисление квадратного корня числа,
* Вычисление корня произвольной степени числа,
* Вычисление тригонометрических функций: `sin`, `cos`, `tg`,
* Вычисление десятичного логарифма числа,
* Вычисление логарифма степени `e`,
* Введение чисел `π` и `e` с точностью в 10 знаков после запятой.

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

## 22. Игра Судоку

Приложение позволяет пользователю играть в игру "Судоку" на устройстве.  
Приложение должно иметь 3 уровня сложности: Легкий, Средний, Тяжелый. Уровни сложности должны отличаться количеством выставленных чисел на поле при старте.
Приложение должно генерировать игровое поле случайно и автоматически.  
Приложение должно позволять пользователю указывать в свободных клетках игрового поля числа от 0 до 9.  
Приложение должно позволять пользователю удалять число из клетки игрового поля (исключение — клетки, где числа указаны на старте путем случайной генерации).
Приложение должно позволять пользователю вводить заметки в клетки игрового поля. Заметка — это предварительное решение игрока о том, какое число будет указано в данной клетке.

## 23. Игра Виселица

Приложение позволяет пользователю играть в игру "Виселица" на устройстве.  
Правила:  
Компьютер (в данном случае — приложение) загадывает слово и выводит на экран закрытые ячейки по количеству букв загаданного слова с открытыми первой и последней буквой. Например, Ч _ _ _ _ _ К — для слова "Человек". Пользователь должен отгадать загаданное слово вводя по одной букве в ход. Если пользователь вводит букву, которая есть в загаданном слове, то буква в ячейке открывается и выводится пользователю. Если пользователь вводит букву, которой нет в загаданном слове, то на изображении с виселицей (изображена изначально) дорисовываются части человечка: голова, туловище, руки по одной, ноги по одной. Когда пользователь совершает 6 ошибок, т.е. на "виселице" человечек изображается полностью, то пользователь проиграл. Если пользователь угадал слово и ввел все буквы верно, то пользователь выиграл.

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

## 24. Приложение для составления гардероба

Приложение позволяет пользователю составлять и хранить списки вещей своего гардероба.  
Каждая вещь в списках должна иметь следующие данные: 
* Наименование,
* Сезон (Лето, Зима, Межсезонье),
* Тип (Верх, Низ, Обувь, Головной убор, Аксессуары)
* Размер (XS, S, M, L, XL, XXL, XXXL — для одежды; числовые размеры для обуви; для головных уборов и аксессуаров указывать размер не нужно),
* Описание (текстовое поле для ввода любого текста).

Приложение должно позволять добавлять вещи в список, редактировать уже добавленные записи и удалять существующие.
Приложение должно отображать список всех добавленных вещей.  Каждый элемент списка должен отображать как минимум наименование, сезон, размер (если он есть) и описание (или хотя бы его часть).
Приложение должно позволять фильтровать вещи по сезону и типу.  
Приложение должно позволять осуществлять поиск вещей по наименованию и описанию.

## 25. Мобильная аптечка

Приложение представляет собой дневник медикаментов в домашней аптечке.  
Приложение позволяет составлять и хранить списки медикаментов, препаратов и перевязочных материалов.  
Каждый элемент списка должен предоставлять следующую информацию:
* Наименование,
* Форма выпуска,
* Количество,
* Дозировка,
* Комментарий пользователя.

Приложение должно позволять добавлять медикаменты в список, редактировать уже добавленные записи и удалять существующие.  
Приложение должно позволять отображать список всех добавленных медикаментов. Каждый элемент списка должен содержать как минимум наименование, количество, форму выпуска и дозировку.  
Приложение должно позволять пользователю составлять произвольные списки из уже существующих медикаментов. Например, список "От головы", куда пользователь сможет добавить, например, несколько разных лекарств, помогающих при головной боли. Медикаменты в этих списках могут пересекаться.  
Приложение должно позволять осуществлять поиск медикаментов по наименованию.

## 26. Игра Морской бой

Приложение позволяет пользователю играть в игру "Морской бой" на устройстве.  
Приложение позволяет пользователю играть с другим пользователем на одном устройстве. При старте игры пользователи указывают свои имена и размещают на игровом поле свои корабли: 1 — четырехпалубный, 2 — трехпалубных, 3 — двухпалубных, 4 — однопалубных. Корабли не должны соприкасаться друг с другом сторонами и углами.  
Поле — 10x10. Столбцы отмечены буквами от А до К. Строки отмечены цифрами от 1 до 10.  
При попадании в корабль противника — на чужом поле ставится крестик, при холостом выстреле — точка. Попавший стреляет ещё раз.  
Когда игрок топит все корабли противника, он побеждает.  
При переходе хода от одного игрока другому приложение должно отображать промежуточный экран, тем самым скрывая от игроков информацию об их кораблях.

## 27. Конвертер величин

Приложение позволяет конвертировать одни значения в другие.  
Приложение должно позволять конвертировать значения длины друг в друга: миллиметры, сантиметры, дециметры, метры, километры, мили, ярды, футы, дюймы.  
Приложение должно позволять конвертировать значения массы друг в друга: микрограммы, миллиграммы, граммы, килограммы, центнеры, тонны, фунты, унции.  
Приложение должно позволять конвертировать значения объема друг в друга: миллилитры, литры, пинты, кварты, галлоны, баррели, кубические метры, кубические футы, кубические дюймы.  
Приложение должно позволять пользователю создавать и использовать собственные конвертеры величин. Например, пользователь хочет добавить конвертер для валют. Приложение должно предоставить ему возможность добавить такой конвертер, запросив следующую информацию: наименования валют и их относительные значения (например, 1 евро — 89.27 руб.).

## 28. Игра Шарады

Приложение позволяет играть в игру про отгадывание персонажей, вещей, чего угодно.  
Игра заключается в том, что один игрок держит устройство с запущенной игрой перед собой, лицевой стороной к другим игрокам. Игроки на экране устройства видят слово, которое должен отгадать основной игрок с устройством в руках. Основной игрок задает наводящие вопросы о том, "кто он", остальные игроки могут отвечать только "да" или "нет". Если основной игрок отгадывает, происходит переход к следующему слову. По окончанию отведенного времени, основной игрок получает то число баллов, сколько персонажей или вещей он отгадал.  
Приложение должно содержать ряд предустановленных тематических категорий с персонажами или другими сущностями. Например, это могут быть персонажи разных фильмов, сериалов, книг, вселенных, вещи, продукты и т.д. Пользователь должен иметь возможность выбрать категорию, в которой хочет играть.  
Приложение должно позволять запускать процесс игры на определенное время, например, на 1 минуту.  
Приложение должно позволять отображать загаданное слово и выполнять переход к следующему, в случае, если основной игрок отгадал, либо спасовал.  
Приложение должно позволять пользователю добавлять собственные категории с собственным списком персонажей или вещей для загадывания. Приложение должно позволять редактировать категории, переименовывать слова, удалять, либо добавлять новые.

## 29. Игра "Правда или Действие"

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

## 30. Дневник артериального давления

Приложение позволяет пользователю вести записи об измерениях артериального давления.  
Приложение должно позволять отображать, добавлять, редактировать и удалять записи об измерениях артериального давления. Каждая запись должна содержать следующие данные:
* Дата и время измерения,
* Систолическое давление,
* Диастолическое давление,
* Пульс.

Записи отсортированы по дате и времени — более новые сверху.

Приложение должно отображать статистику по всем записям за следующие периоды: утро (6:00 — 11:59), день (12:00 — 17:59), вечер (18:00 — 23:59), ночь (00:00 — 5:59), а также за полные сутки (00:00 — 23:59). Статистика за каждый период должна содержать следующую информацию:
* Даты начала и конца периода,
* Средние значения давления и пульса за период,
* Максимальные значения давления и пульса за период,
* Минимальные значения давления и пульса за период.

## 31. Игра Сапёр

Приложение позволяет пользователю играть в известную компьютерную игру "Сапёр".  
Правила игры:  
Игра содержит игровое поле из клеток. За каждой клеткой скрыта либо мина, либо ячейка с числом или без него. Число в ячейке показывает, сколько мин скрыто вокруг данной ячейки. Если рядом с открытой ячейкой есть пустая ячейка (без чисел), то она откроется автоматически. Если игрок открывает ячейку с миной, то он проигрывает. Можно пометить предполагаемую мину на поле. Игра продолжается до тех пор, пока игрок не откроет все **не** заминированные ячейки.  
Приложение должно автоматически строить и отображать игровое поле с ячейками.  
Приложение должно позволять открывать ячейки на поле.  
Приложение должно позволять отмечать предполагаемые ячейки с минами.  
Приложение должно иметь как минимум три уровня сложности, отличающиеся размером поля и количеством мин.

## 32. Планировщик проектов

Приложение позволяет пользователю планировать личные или рабочие проекты.  
Приложение должно позволять пользователю создавать проекты, промежуточные релизы (milestones) и задачи в рамках проектов и промежуточных релизов.  
Каждый проект должен содержать следующую информацию:
* Название,
* Срок сдачи проекта,
* Описание.

Каждый промежуточный релиз должен содержать следующую информацию:
* Название,
* Срок сдачи промежуточного релиза,
* Описание.

Каждая задача должна содержать следующую информацию:
* Название,
* Описание,
* Тип (Bug, Feature, QA, и др.),
* Статус (New, In Progress, Resolved, Closed, и др.),
* Срок сдачи задачи,
* Принадлежность одному из существующих проектов,
* Принадлежность одному из существующих промежуточных релизов.

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

## 33. Приложение для составления расписания общественного транспорта

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

## 34. Приложение для составления меню

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

## 35. Приложение для составления топов

Приложение позволяет пользователю составлять списки рейтингов чего бы то ни было.  
Приложение должно позволять добавлять рейтинговые списки на любые тематики, например, "Лучшие фильмы 2020", "Мои любимые напитки", "Топ 5 недооцененных произведений Агнии Барто" и т.д.  
Приложение должно позволять добавлять в рейтинговые списки любое число элементов. Элементы в рейтинговых списках должны быть отсортированы по рейтингу.  Рейтинг задает сам пользователь.  
Приложение должно позволять пользователю просматривать, добавлять, удалять и редактировать рейтинговые списки и их элементы.
Приложение должно позволять пользователю выполнять поиск по названиям рейтинговых списков.  

## 36. Дневник питания

Приложение позволяет пользователю следить за своим питанием и подсчитывать потребляемое число калорий.  
Приложение должно позволять пользователю формировать общий список продуктов с их массой и пищевой энергетической ценностью в ккал.  
Приложение должно позволять пользователю записывать каждый свой прием пищи. В процессе добавления записи пользователь может выбрать продукты из общего списка продуктов. Количество продуктов пользователь может указывать самостоятельно. Например, если пользователь съел 250 гр. курицы, а в списке курица указана с массой в 100 гр., то пользователь может указать 2.5 курицы из списка.  
Приложение должно позволять пользователю просматривать, добавлять, удалять и редактировать приемы пищи. Каждый прием пищи должен отображать список продуктов, их количество с количеством килокалорий, а также общее число килокалорий, потребленных в рамках приема пищи.  
Приложение должно позволять пользователю указывать желаемое количество килокалорий для потребления в день. В зависимости от этого значения приложение должно отображать разницу между запланированным количеством килокалорий и фактическим.

## 37. Приложение для учета партий настольных игр

Приложение позволяет пользователю вести учет партий настольных игр с целью сравнения предыдущих результатов.  
Приложение позволяет пользователю вести список настольных игр. Каждая настольная игра располагает следующими данными:
* Название,
* Диапазон количества игроков (например, от 2 до 5).

Приложение позволяет пользователю просматривать, добавлять, удалять и редактировать настольные игры в списке.  
Приложение позволяет пользователю просматривать, добавлять, удалять и редактировать партии настольных игр. Каждая партия должна содержать следующую информацию:
* Название настольной игры,
* Список игроков по именам,
* Счет каждого игрока,
* Отметка о том, кто победитель.

Приложение должно позволять осуществлять поиск партий по имени какого-либо из игроков, чтобы иметь возможность просмотреть его партии в разных играх.  
Приложение должно позволять просматривать статистику побед по игрокам и сыгранным ими играм. Например, отображать для игрока "Иванов" его процент побед по каждой из игр, в которых он указан как игрок.

## 38. Приложение Сортировщик

Приложение позволяет пользователю сортировать любые наборы символов различными способами.  
Приложение позволяет пользователю вести несколько списков для сортировок. Каждый список имеет уникальное название. Каждый список содержит элементы: слова, числа и их комбинации.  
Приложение позволяет просматривать, добавлять, редактировать и удалять списки и элементы в рамках списков.  
Приложение позволяет пользователю сортировать элементы в алфавитном и обратном порядках.  
Приложение позволяет настраивать сортировку элементов:
* с учетом/без учета регистра;
* очередность сортировки в зависимости от типа символов: буквы русского языка, буквы английского языка, цифры.
