59 lines
5.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Практическая работа. Tricky Hexahedron
В данном практическом задании предлагается дописать существующий проект-заготовку Android приложения для вычисления суммы длин сторон, длины диагонали, площади полной поверхности и объема прямоугольного параллелепипеда.
Советуем сначала скачать шаблон-заготовку проекта и импортировать проект в Android Studio или IntelliJ IDEA, так как процесс импорта может занимать продолжительное время. Для импорта проекта выберите пункт «Import project (Gradle, Eclipse ADT, etc.)» в окне приветствия.
Измените код существующих классов и интерфейсов, дополните разметку, ресурсы и манифест, чтобы приложение отвечало следущим требованиям:
1. Интерфейс приложения должен содержать элементы, перечисленные в табл. 1. Все указанные элементы интерфейса должны быть видны полностью даже при открытой виртуальной клавиатуре.
2. Элементы *EditText* должны поддерживать ввод чисел с плавающей точкой. Элемент *EditText* с большим номером по порядку располагается ниже *EditText* с меньшим номером.
3. Ограничения на вводимые значения указаны в табл. 1. Точность проверки: 1e-5.
4. Элемент `@id/spinner` позволяет выбрать одну из четырех опций для проведения расчетов в порядке, определенном в данном задании.
5. При нажатии на элемент `@id/calculate` в текстовое поле `@id/solution` устанавливается текст с результатом проведенных расчетов в соответствии с выбранной в `@id/spinner` опцией. Гарантируется, что в момент нажатия все три *EditText* имеют непустой текст.
6. При нажатии на *TextView* с `@id/solution` текущее значение копируется в буфер обмена.
| № | View type | id | Максимальное значение |
| :-: | :------: | -------------- | --------------------- |
| 0 | *TextView* | `side_a_label` | |
| 1 | *EditText* | `side_a` | $10^{12}$ |
| 2 | *TextView* | `side_b_label` | |
| 3 | *EditText* | `side_b` | $10^{12}$ |
| 4 | *TextView* | `side_c_label` | |
| 5 | *EditText* | `side_c` | $10^{12}$ |
| 6 | *Spinner* | `spinner` | |
| 7 | *View* | `calculate` | |
| 8 | *TextView* | `solution` | |
*Таблица 1. Элементы пользовательского интерфейса*
| № | Ресурс | Допустимое значение |
| :-: | ------ | ------------------- |
| 1 | `@string/side_a_text` | a |
| 2 | `@string/side_b_text` | b |
| 3 | `@string/side_c_text` | c |
*Таблица 2. strings.xml*
Рекомендуется использовать Android Studio Bumblebee 2021.1.1. В проекте gradle version 7.4, gradle plugin version 7.1.2.
Сдать в систему тестирования необходимо zip архив, в корневом каталоге которого располагается дополненный проект Android Studio/IntelliJ IDEA. После загрузки zip архива приложение будет запущено в системе автоматического тестирования для проверки на соответствие техническому заданию.
Допускается использовать язык Java и/или Kotlin. При сборке проекта вcе изменения в файле build.gradle будут проигнорированы будут использованы зависимости только из шаблона-заготовки; не изменяйте пакет приложения.
Тестирование одной посылки может длиться до 5 минут, после завершения тестирования будет доступна информация об общем числе тестов и числе пройденных тестов. Количество посылок в систему не ограничено. Штраф за повторные попытки не начисляется.
| № | Тест | Балл | Проверка |
| :-: | -- | ---- | -------- |
| 1 | stringsTest | 1 | Строковые ресурсы |
| 2 | checkLength | 1+1 | Сумма длин сторон параллелепипеда |
| 3 | checkDiagonal | 2+2 | Длина диагонали параллелепипеда |
| 4 | checkArea | 1+1 | Площадь полной поверхности параллелепипеда |
| 5 | checkVolume | 1+1 | Объем параллелепипеда |
| 6 | interfaceTest | 1 | Разметка приложения |
*Таблица 3. Критерии оценивания и тесты*
![](/doc/screenshot.png)
*Рис. 1. Эталонный интерфейс*