--- gitea: none include_toc: true --- # Тесты к курсу «Введение в программирование» [Условия домашних заданий](https://www.kgeorgiy.info/courses/prog-intro/homeworks.html) ## Домашнее задание 3. Реверс [![Reverse Tests](https://git.fymio.us/me/prog-intro-2025/actions/workflows/reverse.yml/badge.svg)](https://git.fymio.us/me/prog-intro-2025/actions) Модификации * *Base* * Исходный код тестов: [ReverseTest.java](java/reverse/ReverseTest.java), [ReverseTester.java](java/reverse/ReverseTester.java) * Откомпилированные тесты: [ReverseTest.jar](artifacts/ReverseTest.jar) * Аргументы командной строки: модификации * *Memory* * Программа должна сначала считывать все данные в память, и только потом обрабатывать их. * Пусть _M_ – объём памяти, необходимый для сохранения ввода в двумерном массиве `int` минимального размера. Ваша программа должна использовать не более 4_M_ + 1024 байт памяти. * Накладные расходы на запуск вашей программы JVM не учитываются. * *3637* * Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите максимум из чисел, находящихся в его столбце в последующих строках, и его самого * Класс должен иметь имя `ReverseMaxC` * *3839* * Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите максимум из чисел текущее число — правый нижний угол матрицы * Класс должен иметь имя `ReverseMax` * *3435* * Рассмотрим входные данные как (не полностью определенную) матрицу, выведите ее поворот по часовой стрелке, например для ввода ``` 1 2 3 4 5 6 7 8 9 ``` вывод должен быть ``` 7 5 1 8 6 2 9 3 4 ``` * Класс должен иметь имя `ReverseRotate` * *3233* * Выведите (в реверсивном порядке) только числа, у которых сумма номеров строки и столбца четная * Класс должен иметь имя `ReverseEven` * *4142* * Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите среднее из чисел в его столбце и строке * Класс должен иметь имя `ReverseAvg` * *4749* * Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите сумму чиселв его столбце и строке * Класс должен иметь имя `ReverseSum` ## Домашнее задание 2. Сумма чисел [![Sum Tests](https://git.fymio.us/me/prog-intro-2025/actions/workflows/sum.yml/badge.svg)](https://git.fymio.us/me/prog-intro-2025/actions) Модификации * *Base* * Исходный код тестов: [SumTest.java](java/sum/SumTest.java), [SumTester.java](java/sum/SumTester.java), [базовые классы](java/base/) * Откомпилированные тесты: [SumTest.jar](artifacts/SumTest.jar) * Аргументы командной строки: модификации * *3637* * Входные данные являются 64-битными числами в формате с плавающей точкой * На вход подаются десятичные и шестнадцатеричные числа * Шестнадцатеричные числа имеют префикс `0x`, например `0xa.bp2` равно (10+11/16)·4 равно 42.75 * Ввод регистронезависим * Класс должен иметь имя `SumDoubleHex` * *3839* * Входные данные помещаются в тип [BigDecimal](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/math/BigDecimal.html) * На вход подаются десятичные и шестнадцатеричные числа * Шестнадцатеричные числа имеют префикс `0x`, например `0xbsc` равно 11·10⁻¹² (мантисса и порядок являются целыми числами) * Ввод регистронезависим * Класс должен иметь имя `SumBigDecimalHex` * *3435* * На вход подаются десятичные и шестнадцатеричные числа * Шестнадцатеричные числа имеют префикс `0x` * Ввод регистронезависим * Класс должен иметь имя `SumHex` * *3233* * Входные данные являются 64-битными числами в формате с плавающей точкой * Класс должен иметь имя `SumDouble` * *4142* * Входные данные помещаются в тип [BigInteger](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/math/BigInteger.html) * восьмеричные числа имеют суффикс `o` * Класс должен иметь имя `SumBigIntegerOctal` * *4749* * Входные данные являются 64-битными целыми числами * восьмеричные числа имеют суффикс `o` * Класс должен иметь имя `SumLongOctal` Для того, чтобы протестировать программу: 1. Скачайте откомпилированные тесты ([SumTest.jar](artifacts/SumTest.jar)) 1. Откомпилируйте `Sum.java` 1. Проверьте, что создался `Sum.class` 1. В каталоге, в котором находится `Sum.class`, выполните команду ``` java -ea -jar <путь к SumTest.jar> Base ``` * Например, если `SumTest.jar` находится в текущем каталоге, выполните команду ``` java -ea -jar SumTest.jar Base ``` 1. Для ускорения отладки рекомендуется сделать скрипт, выполняющий шаги 2−4. ## Домашнее задание 1. Запусти меня! Модификации * *RunMe* 1. Скачайте исходный код [RunMe.java](java/RunMe.java). 1. Создайте скрипт, компилирующий и запускающий `RunMe` из командной строки с выданными вам аргументами командной строки. 1. Следуйте выведенной инструкции. Рекомендации по выполнению модификации 1. Проверьте версию Java: 1. Запустите `javac --version` и проверьте, что версия находится в диапазоне 21..24. 1. Запустите `java --version` и проверьте, что версия такая же как и у `javac`. 1. Скачайте [RunMe.java](java/RunMe.java) 1. Откомпилируйте `RunMe.java`: 1. Запустите `javac RunMe.java` 1. Убедитесь, что компиляция завершилась без ошибок 1. Проверьте, что появился `RunMe.class` 1. Запустите `RunMe`: 1. Запустите `java RunMe [шесть] [слов] [пароля] [пришедшего] [на] [email]` 1. При правильном исполнении вы должны получить ссылку. Если получено сообщение об ошибке — исправьте её и запустите повторно 1. Зайдите по полученной ссылке и убедитесь, что она правильная 1. Напишите и протестируйте скрипт: 1. Напишите скрипт, включающий команды компиляции и запуска. Если вы не умеете писать скрипты, воспользуйтесь одной из инструкций: [Windows](https://tutorialreference.com/batch-scripting/batch-script-files), [Linux](https://www.freecodecamp.org/news/shell-scripting-crash-course-how-to-write-bash-scripts-in-linux/), [macOS](https://rowannicholls.github.io/bash/intro/myscript.html) 1. Запустите и проверьте, что вы получили ту же ссылку, что и в предыдущем пункте 1. Сдайте скрипт преподавателю 1. Вы можете получить больше плюсиков, модифицируя код `RunMe.java`