/
akryukov
/
programming-basics
Обзор
Документация
Войти
/
akryukov
/
programming-basics
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
java/tasks 24.html
932 строки
60 KB
akryukov92
rename setAngle to setAngleDegree in tasks 1168, 5304
13 ноя 2025, 09:09
13 ноя 2025, 09:09
4e914e5
Код
Авторство
О чём код?
<!DOCTYPE html><html lang="ru"><head><meta charset='utf-8'/><title>24 Внутреннее состояние</title><style>.check_single { margin:15px; border:1px solid black; padding:5px; width:calc(100% - 40px); } sqrt val { border-top: 1px solid black; } sqrt:before { content:"\221A"; } .section { counter-reset:section; } .section h3:after { counter-increment:section; content: " " counter(section); } table { border-collapse:collapse; } .check_values, .check_values_v2 { width:100%; counter-reset:test_case; } .check_values td:first-child::before { counter-increment:test_case; content: counter(test_case); } table td, table th { border:1px solid black; text-align:center; } .check_values td:first-child, .check_values_v2 td:first-child{ width:40px; } .check_values td, .check_values_v2 td { max-width: 450px; } .lab_nav ol { list-style:none; } .nav { position:fixed; top:0; right:0; margin:15px; clear:both; } .nav ul{ list-style-type:none; padding:0; float:left; } .nav li { margin:2px; border:1px solid black; } .nav li a { display:block; padding:7px; } .task_block { width:80%; page-break-inside:avoid; padding:10px; display:block; } .task_block:target{ background-color:lightgrey; } .task_block:target .task_id{ color:white; } .task_id { float:right; color:lightgrey; } .quiz_block { width:80%; } .quiz_block:target{ background-color:lightgrey; } .task_desc { margin:5px; } .example_image { width:200px; } .lab_nav { width:80%; overflow:auto; } .check_values .preformatted, .preformatted { font-family:monospace; white-space-collapse:preserve; white-space:pre; text-wrap:pretty; text-align:left; padding:10px; } .stream_values tr td:nth-child(3) { border-top-width:0; border-bottom-width:0; text-align:left; } .stream_values tr:nth-child(2) td:nth-child(2) { border-top-width:0; border-bottom-width:0; text-align:right; } .stream_values tr td:nth-child(1){ border-top-width:0; border-bottom-width:0; text-align:right; } .stream_values tr.test_row td:nth-child(2){ text-align:right; } .stream_values tr td:nth-child(2){ border-top-width:0; border-bottom-width:0; text-align:left; } .stream_values .preformatted{ padding: 0; } .stream_values tr.test_row td { border-top-width:1px; } .stream_values tr.test_row td:first-of-type { border-top-width:1px; border-bottom-width:1px; text-align:center; width:15px; } .stream_values tr:last-of-type td { border-bottom-width:1px; } .stream_values { width:100%; } formula { font-weight:bold; text-align:center; vertical-align:middle; } fraction { display:inline-block; text-align:center; vertical-align:middle; font-weight:bold; } formula .abs{ border-left: solid black 1px; border-right: solid black 1px; padding: 2px; } numerator { display:block; border-bottom:2px solid black; } denominator { display:block; } .comment{ color:darkgrey; } .step{ display:none; } .step:last-child, .step:target{ display:block; } .step:target ~ .step:last-child{ display:none; } .console{ background-color:black; color:white; width:300px; } .zoom{ background-color:lightgrey; font-size:40pt; padding:0 10px; } .task_block:target .zoom { background-color:white; }</style><meta name="author" content="Подборка задач, выбор порядка подачи и подготовка тестовых данных - Крюков Александр, Омск 2013-2019"/></head><body class='section'><a name='heading'><h1>Внутреннее состояние</h1></a><div class='lab_nav'>Другие темы<ol> <li>1 <a href='tasks 1.html'>Печать текста на экран</a></li> <li>2 <a href='tasks 2.html'>Заполнение шаблона данными от пользователя</a></li> <li>3 <a href='tasks 3.html'>Организация вычислений</a></li> <li>4 <a href='tasks 4.html'>Проверка исходных данных</a></li> <li>5 <a href='tasks 5.html'>Запуск программы с известными исходными данными</a></li> <li>6 <a href='tasks 6.html'>Взаимоисключающие случаи</a></li> <li>7 <a href='tasks 7.html'>Работа с интервалами значений</a></li> <li>8 <a href='tasks 8.html'>Реорганизация повторяющихся действий</a></li> <li>9 <a href='tasks 9.html'>Обработка неизвестного объема данных</a></li> <li>10 <a href='tasks 10.html'>Вложенные циклы</a></li> <li>11 <a href='tasks 11.html'>Базовые операции с массивами</a></li> <li>12 <a href='tasks 12.html'>Перестановки элементов массива</a></li> <li>13 <a href='tasks 13.html'>Использование числовых массивов</a></li> <li>14 <a href='tasks 14.html'>Вычисление агрегатов</a></li> <li>15 <a href='tasks 15.html'>Поиск в массиве</a></li> <li>16 <a href='tasks 16.html'>Сортировка вставкой</a></li> <li>17 <a href='tasks 17.html'>Строки</a></li> <li>18 <a href='tasks 18.html'>Чтение файлов</a></li> <li>19 <a href='tasks 19.html'>Запись в файлы</a></li> <li>20 <a href='tasks 20.html'>Возврат значения</a></li> <li>21 <a href='tasks 21.html'>Перехват исключений</a></li> <li>22 <a href='tasks 22.html'>Выбрасывание исключений</a></li> <li>23 <a href='tasks 23.html'>Составные типы данных</a></li> <li>24 <a href='tasks 24.html'>Внутреннее состояние</a></li> <li>25 <a href='tasks 25.html'>Коллекции</a></li> <li>26 <a href='tasks 26.html'>Рекурсия</a></li> <li>27 <a href='tasks 27.html'>Даты</a></li> <li>28 <a href='tasks 28.html'>Комбинаторика</a></li> <li>29 <a href='tasks 29.html'>SQL СУБД</a></li> <li>30 <a href='tasks 30.html'>Псевдослучайные числа</a></li> <li>31 <a href='tasks 31.html'>Реализация стандартных интерфейсов</a></li> <li>32 <a href='tasks 32.html'>Использование самописных интерфейсов</a></li> </ol></div><div class='nav'><ul><li><a href='#heading'>^</a></li><li><a href='#task3185' class='example'>1*</a><li><a href='#task2809'>2</a><li><a href='#task5304'>3</a><li><a href='#task7556'>4</a><li><a href='#task2165'>5</a><li><a href='#task1168'>6</a><li><a href='#task4037'>7</a><li><a href='#task5755'>8</a><li><a href='#task3759'>9</a><li><a href='#task2896'>10</a><li><a href='#task5032' class='example'>11*</a><li><a href='#task3567'>12</a></ul></div><div id='task3185' class='task_block'> <div class='task_id'>3185</div> <h3>Задача</h3> <h4>Постановка задачи</h4> <div class='task_desc'> Числа обозначают координаты двух точек A и B. Первое число это x точки A. Второе - y точки A. Третье - x точки B. Четвертое - y точки B. Вычислить расстояние между точками по формуле: <br/> <formula> <sqrt><val> (Bx - Ax)<sup>2</sup> + (By - Ay)<sup>2</sup> </val></sqrt> </formula> </div> <h4>Реализуйте НЕстатический метод для решения задачи</h4> <ol start='1'><li>Убедитесь, что вы реализовали класс Point и метод print из задачи <a href="tasks 23.html#task2686" target="_blank">ЛР23#2686(открыть в новой вкладке)</a></li><li>Метод distanceTo должен быть реализован в классе Point без использования слова static</li><li>Метод distanceTo принимает в качестве аргумента 1 экземпляр класса Point и возвращает действительное число.</li><li>В теле метода distanceTo расчитайте расстояние между точками, заданными полями x и y.</li></ol><div class='task_desc'> Должно получиться так: </div> <div class='check_single preformatted'>public double distanceTo(Point p) { double dx = this.x - p.x; //ключевое слово this обозначает тот экземпляр, у которого будет вызван метод. double dy = this.y - p.y; return Math.sqrt(dx * dx + dy * dy); }</div> <div class='task_desc'> В методе main класса Program добавьте следующий код: </div> <div class='check_single preformatted'>Point a = new Point(1, 1), b = new Point(3, 4); double distance = a.distanceTo(b);//this будет значить a System.out.printf("Расстояние между точками\t%s и\t%s\tравно\t%.4f\n",print(a), print(b), distance); Point src = new Point(-2, 4); Point dest = new Point(8, -10); distance = src.distanceTo(dest);//this будет значить src System.out.printf("Расстояние между точками\t" + print(src) + " и\t%s\tравно\t" + distance + "\n", print(dest)); src = new Point(0, 0); dest = new Point(-5, -7); distance = dest.distanceTo(src);//this будет значить dest System.out.printf("Расстояние между точками\t%s и\t%s\tравно\t%.4f\n", print(src), print(dest), distance); dest = new Point(0, 0); System.out.printf("Расстояние между точками\t" + print(src) + " и\t" + print(dest) + "\tравно\t%.4f\n", src.distanceTo(dest)); src = new Point(5, 5); for (int i = 0; i < 10; i++) { dest = new Point(0, i); System.out.printf("Расстояние между точками\t" + print(src) + " и\t" + print(dest) + "\tравно\t%.4f\n", src.distanceTo(dest)); } </div> <div class='task_desc'> В результате запуска программы должно быть выведено сообщение: </div> <div class='check_single preformatted'>Расстояние между точками (1.0 | 1.0) и (3.0 | 4.0) равно 3,6056 Расстояние между точками (-2.0 | 4.0) и (8.0 | -10.0) равно 17.204650534085253 Расстояние между точками (0.0 | 0.0) и (-5.0 | -7.0) равно 8,6023 Расстояние между точками (0.0 | 0.0) и (0.0 | 0.0) равно 0,0000 Расстояние между точками (5.0 | 5.0) и (0.0 | 0.0) равно 7,0711 Расстояние между точками (5.0 | 5.0) и (0.0 | 1.0) равно 6,4031 Расстояние между точками (5.0 | 5.0) и (0.0 | 2.0) равно 5,8310 Расстояние между точками (5.0 | 5.0) и (0.0 | 3.0) равно 5,3852 Расстояние между точками (5.0 | 5.0) и (0.0 | 4.0) равно 5,0990 Расстояние между точками (5.0 | 5.0) и (0.0 | 5.0) равно 5,0000 Расстояние между точками (5.0 | 5.0) и (0.0 | 6.0) равно 5,0990 Расстояние между точками (5.0 | 5.0) и (0.0 | 7.0) равно 5,3852 Расстояние между точками (5.0 | 5.0) и (0.0 | 8.0) равно 5,8310 Расстояние между точками (5.0 | 5.0) и (0.0 | 9.0) равно 6,4031 </div> </div> <div id='task2809' class='task_block'> <div class='task_id'>2809</div> <h3>Задача</h3> <div class='task_desc'> Дан массив точек. В ходе работы программы координаты некоторых точек меняются. Нужно определить какие точки изменились. </div> <ol start='1'><li>Убедитесь, что вы реализовали класс Point и метод print из задачи <a href="tasks 23.html#task2686" target="_blank">ЛР23#2686(открыть в новой вкладке)</a></li><li>Реализуйте НЕстатический метод setX. Он принимает действительное значение, ничего не возвращает и меняет значение поля x</li><li>Реализуйте НЕстатический метод setY. Он принимает действительное значение, ничего не возвращает и меняет значение поля y</li></ol><div class='task_desc'> Пример реализации метода setX </div> <div class='check_single preformatted'>public void setX(double x) { this.x = x; }</div> <ol start='4'><li>Реализуйте статический метод wasChanged. Он возвращает true, если значение полей x или y изменилось, иначе false</li><li>Вы можете добавлять поля класса и менять реализацию методов, если это необходимо</li></ol><div class='task_desc'> Сигнатура метода wasChanged </div> <div class='check_single preformatted'>public boolean wasChanged() {</div> <div class='task_desc'> В методе main класса Program добавьте следующий код: </div> <div class='check_single preformatted'>Point p = new Point(13, 14); Point p2 = new Point(15, 16); p.setX(100); if (p.wasChanged()) { System.out.println("ПРАВИЛЬНО: p было изменено"); } else { System.out.println("НЕПРАВИЛЬНО: p было изменено, но метод wasChanged вернул false"); } if (p2.wasChanged()) { System.out.println("НЕПРАВИЛЬНО: p2 не менялось, но метод wasChanged вернул true"); } else { System.out.println("ПРАВИЛЬНО: p2 не менялось"); } Point[] points = new Point[]{ new Point(1, 2), new Point(3, 4), new Point(5, 6), new Point(7, 8), new Point(9, 10), new Point(11, 12) }; int seed = 111111127;//поменяйте это значение, чтобы получить другой случайный результат Random rnd = new Random(seed); int plannedChangedCount = points.length / 2; System.out.println("Должно измениться: " + plannedChangedCount + " из " + points.length + " точек"); for (int i = 0; i < plannedChangedCount; i++) { int idx = rnd.nextInt(points.length); System.out.println("Меняю точку на индексе " + idx); points[idx].setX(100 + rnd.nextInt(10)); points[idx].setY(100 + rnd.nextInt(10)); } for (int i = 0; i < points.length; i++) { if (points[i].wasChanged()) { System.out.println(print(points[i]) + " изменилась"); } else { System.out.println(print(points[i]) + " не изменилась"); } } </div> <div class='task_desc'> В результате запуска программы должно быть выведено сообщение: </div> <div class='check_single preformatted'>ПРАВИЛЬНО: p было изменено ПРАВИЛЬНО: p2 не менялось Должно измениться: 3 из 6 точек Меняю точку на индексе 0 Меняю точку на индексе 2 Меняю точку на индексе 4 (108.0 | 101.0) изменилась (3.0 | 4.0) не изменилась (109.0 | 101.0) изменилась (7.0 | 8.0) не изменилась (100.0 | 100.0) изменилась (11.0 | 12.0) не изменилась </div> <div class='task_desc'> Попробуйте изменить значение переменной seed и посмотрите как изменится результат. </div> </div> <div id='task5304' class='task_block'> <div class='task_id'>5304</div> <h3>Задача</h3> <h4>Реализуйте сеттер для поля angleDegree</h4> <ol start='1'><li>Убедитесь, что вы реализовали класс Direction и метод print из задачи <a href="tasks 23.html#task6791" target="_blank">ЛР23#6791(открыть в новой вкладке)</a></li><li>Реализуйте метод setAngleDegree, который принимает действительное число - угол в градусах и записывает его в поле angleDegree</li><li>Если угол меньше 0, нужно прибавлять 360 до тех пор, пока он не станет больше 0. Итоговое значение должно быть записано в поле angleDegree</li><li>Если угол больше 360, нужно вычитать 360 до тех пор, пока он не станет меньше 360. Итоговое значение должно быть записано в поле angleDegree</li><li>Конструктор класса Direction должен работать так же как и метод setAngleDeg</li></ol><div class='task_desc'> Сигнатура метода setAngleDegree: </div> <div class='check_single preformatted'>public void setAngleDegree(double newAngleDegree) {</div> <div class='task_desc'> В методе main класса Program добавьте следующий код: </div> <div class='check_single preformatted'>Direction base = new Direction(15, 99); base.setAngleDegree(-100); System.out.println(print(base)); base.setAngleDegree(-360); System.out.println(print(base)); base.setAngleDegree(-400); System.out.println(print(base)); base.setAngleDegree(-2000); System.out.println(print(base)); Direction dir = new Direction(-2000, 666); System.out.println(print(dir)); System.out.println("------------"); base.setAngleDegree(45); System.out.println(print(base)); base.setAngleDegree(360); System.out.println(print(base)); base.setAngleDegree(400); System.out.println(print(base)); base.setAngleDegree(3000); System.out.println(print(base)); dir = new Direction(3000, 666); System.out.println(print(dir)); System.out.println("------------"); base.setAngleDegree(0); System.out.println(print(base)); </div> <div class='task_desc'> В результате запуска программы должно быть выведено сообщение: </div> <div class='check_single preformatted'>Угол 260,0000 проложение 99,0000 Угол 0,0000 проложение 99,0000 Угол 320,0000 проложение 99,0000 Угол 160,0000 проложение 99,0000 Угол 160,0000 проложение 666,0000 ------------ Угол 45,0000 проложение 99,0000 Угол 0,0000 проложение 99,0000 Угол 40,0000 проложение 99,0000 Угол 120,0000 проложение 99,0000 Угол 120,0000 проложение 666,0000 ------------ Угол 0,0000 проложение 99,0000 </div> </div> <div id='task7556' class='task_block'> <div class='task_id'>7556</div> <h3>Задача</h3> <h4>Реализуйте геттер для поля angleDegree</h4> <ol start='1'><li>Убедитесь, что вы реализовали класс Direction и метод print из задачи <a href="tasks 23.html#task6791" target="_blank">ЛР23#6791(открыть в новой вкладке)</a></li><li>Реализуйте метод getAngleRad, который не принимает аргументов и возвращает действительное число</li><li>Метод должен читать поле angleDegree, переводит значение из градусов в радианы и возвращает вычисленное значение</li><li>Для перевода из градусов в радианы воспользуйтесь формулой angleRadian = angleDegree * Math.PI / 180;</li></ol><div class='task_desc'> Сигнатура метода getRadians: </div> <div class='check_single preformatted'>public void getRadians() {</div> <div class='task_desc'> В методе main класса Program добавьте следующий код: </div> <div class='check_single preformatted'>Direction dir = new Direction(0, 88); System.out.println(print(dir)); System.out.printf("Угол в радианах равен %.4f", dir.getAngleRad()); dir = new Direction(45, 77); System.out.println(print(dir)); System.out.printf("Угол в радианах равен %.4f", dir.getAngleRad()); dir = new Direction(90, 66); System.out.println(print(dir)); System.out.printf("Угол в радианах равен %.4f", dir.getAngleRad()); dir = new Direction(135, 55); System.out.println(print(dir)); System.out.printf("Угол в радианах равен %.4f", dir.getAngleRad()); dir = new Direction(180, 44); System.out.println(print(dir)); System.out.printf("Угол в радианах равен %.4f", dir.getAngleRad()); </div> <div class='task_desc'> В результате запуска программы должно быть выведено сообщение: </div> <div class='check_single preformatted'>Угол 0,0000 проложение 88,0000 Угол в радианах равен 0,0000Угол 45,0000 проложение 77,0000 Угол в радианах равен 0,7854Угол 90,0000 проложение 66,0000 Угол в радианах равен 1,5708Угол 135,0000 проложение 55,0000 Угол в радианах равен 2,3562Угол 180,0000 проложение 44,0000 Угол в радианах равен 3,1416</div> </div> <div id='task2165' class='task_block'> <div class='task_id'>2165</div> <h3>Задача</h3> <h4>Реализуйте сеттер для поля distance</h4> <ol start='1'><li>Убедитесь, что вы реализовали класс Direction и методы print из задачи <a href="tasks 23.html#task6791" target="_blank">ЛР23#6791(открыть в новой вкладке)</a></li><li>Убедитесь, что вы реализовали метод setAngleDegree из задачи <a href="tasks 24.html#task5304" target="_blank">ЛР24#5304(открыть в новой вкладке)</a></li><li>Реализуйте метод setDistance, который принимает действительное число и записывает его в поле distance</li><li>Если расстояние меньше 0, то нужно также изменить угол поворота на 180 градусов</li><li>Изменение угла поворота должно учитывать правило "не более 360, не меньше 0"</li><li>После изменения угла поворота, нужно поменять знак у дистанции с минуса на плюс</li><li>Конструктор класса Direction должен работать с учетом логики setDistance и setAngleDegree</li></ol><div class='task_desc'> Сигнатура метода setDistance: </div> <div class='check_single preformatted'>public void setDistance(double newDistance) {</div> <div class='task_desc'> В методе main класса Program добавьте следующий код: </div> <div class='check_single preformatted'>Direction base = new Direction(15, 99); base.setDistance(666); System.out.println(print(base)); base.setDistance(-1111); System.out.println(print(base)); base = new Direction(200, 99); base.setDistance(-22222); System.out.println(print(base)); base.setDistance(0); System.out.println(print(base)); Direction dir = new Direction(50, -666); System.out.println(print(dir)); dir = new Direction(2010, -1111); System.out.println(print(dir)); </div> <div class='task_desc'> В результате запуска программы должно быть выведено сообщение: </div> <div class='check_single preformatted'>Угол 15,0000 проложение 666,0000 Угол 195,0000 проложение 1111,0000 Угол 20,0000 проложение 22222,0000 Угол 20,0000 проложение 0,0000 Угол 230,0000 проложение 666,0000 Угол 30,0000 проложение 1111,0000 </div> </div> <div id='task1168' class='task_block'> <div class='task_id'>1168</div> <h3>Задача</h3> <h4>Реализуйте статический метод AreSame для сравнения экземпляров класса Direction</h4> <ol start='1'><li>Убедитесь, что вы реализовали класс Direction и метод print из задачи <a href="tasks 23.html#task6791" target="_blank">ЛР23#6791(открыть в новой вкладке)</a></li><li>Убедитесь, что вы реализовали метод setAngleDegree из задачи <a href="tasks 24.html#task5304" target="_blank">ЛР24#5304(открыть в новой вкладке)</a></li><li>Убедитесь, что вы реализовали метод setDistance из задачи <a href="tasks 24.html#task2165" target="_blank">ЛР24#2165(открыть в новой вкладке)</a></li><li>Реализуйте статический метод areSame.</li><li>Два направления считаются одинаковыми, если они имеют одинаковые углы и расстояния.</li></ol><div class='task_desc'> В методе main класса Program добавьте следующий код: </div> <div class='check_single preformatted'>Direction first = new Direction(53.1301, 5); Direction second = new Direction(53.1301, 5); if (areSame(first, second)) { System.out.printf("ПРАВИЛЬНО: Проложения равны %s\n", print(first)); } else { System.out.printf("НЕ ПРАВИЛЬНО: %s и %s не равны\n", print(first), print(second)); } if (first == second) { System.out.println("Это сообщение не должно быть выведено"); } else { System.out.println("ПРАВИЛЬНО: Переменные a и b не равны, хотя значения проложений равны"); } first.setAngleDegree(-100); second.setAngleDegree(260); if (areSame(first, second)) { System.out.printf("ПРАВИЛЬНО: Проложения равны %s\n", print(first)); } else { System.out.printf("НЕ ПРАВИЛЬНО: %s и %s не равны\n", print(first), print(second)); } first.setDistance(-100); second = new Direction(80, -5); if (areSame(first, second)) { System.out.printf("НЕ ПРАВИЛЬНО: Проложения равны %s\n", print(first)); } else { System.out.printf("ПРАВИЛЬНО: %s и %s не равны\n", print(first), print(second)); } first = new Direction(20, 100); second = new Direction(-160, -100); if (areSame(first, second)) { System.out.printf("ПРАВИЛЬНО: Проложения равны %s\n", print(first)); } else { System.out.printf("НЕ ПРАВИЛЬНО: %s и %s не равны\n", print(first), print(second)); } first = new Direction(45, 100); second = new Direction(45, 2222); if (areSame(first, second)) { System.out.printf("НЕ ПРАВИЛЬНО: %s и %s имеют разную дистанцию, но считаются равными.\n", print(first), print(second)); } else { System.out.printf("ПРАВИЛЬНО: %s и %s не равны потому что имеют разную дистанцию.\n", print(first), print(second)); } first = new Direction(100, 10); second = new Direction(120, 10); if (areSame(first, second)) { System.out.printf("НЕ ПРАВИЛЬНО: %s и %s имеют разные углы, но считаются равными.\n", print(first), print(second)); } else { System.out.printf("ПРАВИЛЬНО: %s и %s не равны потому что имеют разные углы.\n", print(first), print(second)); } </div> <div class='task_desc'> В результате запуска программы должно быть выведено сообщение: </div> <div class='check_single preformatted'>ПРАВИЛЬНО: Проложения равны Угол 53,1301 проложение 5,0000 ПРАВИЛЬНО: Переменные a и b не равны, хотя значения проложений равны ПРАВИЛЬНО: Проложения равны Угол 260,0000 проложение 5,0000 ПРАВИЛЬНО: Угол 80,0000 проложение 100,0000 и Угол 260,0000 проложение 5,0000 не равны ПРАВИЛЬНО: Проложения равны Угол 20,0000 проложение 100,0000 ПРАВИЛЬНО: Угол 45,0000 проложение 100,0000 и Угол 45,0000 проложение 2222,0000 не равны потому что имеют разную дистанцию. ПРАВИЛЬНО: Угол 100,0000 проложение 10,0000 и Угол 120,0000 проложение 10,0000 не равны потому что имеют разные углы. </div> </div> <div id='task4037' class='task_block'> <div class='task_id'>4037</div> <h3>Задача</h3> <div class='task_desc'> Реализуйте класс Leaderboard с методом addRecord и print. Класс хранит 3 наибольших значения по очкам. </div> <ol start='1'><li>В классе Leaderboard должно быть три поля для целых чисел: gold - наибольшее значение, silver - меньше золота, больше бронзы, bronze - самое маленькое из трех</li><li>Метод addRecord ничего не возвращает, принимает одно целое число. Его сигнатура:</li></ol><div class='check_single preformatted'>public void addRecord(int value) {</div> <ol start='3'><li>Если методу addRecord передали значение - новый рекорд, то значения в полях gold, silver, bronze смещаются. Самое маленькое значение можно забыть.</li><li>Метод print возвращает строку, в которой написаны сохраненные значения по шаблону:</li></ol><div class='check_single preformatted'>Золото $gold Серебро$silver Бронза$bronze</div> <div class='task_desc'> В методе main класса Program добавьте следующий код: </div> <div class='check_single preformatted'>Leaderboard board = new Leaderboard(); board.addRecord(100); board.addRecord(108); board.addRecord(105); System.out.println(board.print()); System.out.println(); board.addRecord(104); System.out.println(board.print()); System.out.println(); board.addRecord(111); System.out.println(board.print()); System.out.println(); board.addRecord(109); System.out.println(board.print()); </div> <div class='task_desc'> В результате запуска программы должно быть выведено сообщение: </div> <div class='check_single preformatted'>Новое золото 100 Новое золото 108 Новое серебро 105 Золото 108 Серебро 105 Бронза 100 Новая бронза 104 Золото 108 Серебро 105 Бронза 104 Новое золото 111 Золото 111 Серебро 108 Бронза 105 Новое серебро 109 Золото 111 Серебро 109 Бронза 108 </div> </div> <div id='task5755' class='task_block'> <div class='task_id'>5755</div> <h3>Задача</h3> <h4>Реализуйте сеттер для поля volume и temperature</h4> <ol start='1'><li>Убедитесь, что вы реализовали класс LiquidPortion из задачи <a href="tasks 23.html#task7380" target="_blank">ЛР23#7380(открыть в новой вкладке)</a></li><li>Реализуйте метод setVolume, который принимает действительное число и записывает его в поле volume</li><li>Если переданное значение меньше нуля, метод должен выбросить исключение IllegalArgumentException</li><li>Реализуйте метод setTemperature, который принимает действительное число и записывает его в поле temperature</li><li>Если переданное значение меньше -273.15, метод должен выбросить исключение IllegalArgumentException</li></ol><div class='task_desc'> В методе main класса Program добавьте следующий код: </div> <div class='check_single preformatted'>LiquidPortion base = new LiquidPortion(99, 19); base.setVolume(20); System.out.printf("Объем емкости: %.4f л Температура смеси: %.4f °C\n", base.volume, base.temperature); base.setVolume(0); System.out.printf("Объем емкости: %.4f л Температура смеси: %.4f °C\n", base.volume, base.temperature); try { base.setVolume(-50); System.out.println("Это сообщение не должно быть выведено, потому что объем должен быть неотрицательным"); } catch (IllegalArgumentException e) { System.out.println("Ожидалось сообщение : Объем должен быть неотрицательным"); System.out.println("Фактическое сообщение: " + e.getMessage()); } base.setTemperature(100); System.out.printf("Объем емкости: %.4f л Температура смеси: %.4f °C\n", base.volume, base.temperature); try { base.setTemperature(-274); System.out.println("Это сообщение не должно быть выведено, потому что температура должна быть выше абсолютного нуля (-273.15)"); } catch (IllegalArgumentException e) { System.out.println("Ожидалось сообщение : Температура должна быть выше абсолютного нуля (-273.15)"); System.out.println("Фактическое сообщение: " + e.getMessage()); } base.setTemperature(-50); System.out.printf("Объем емкости: %.4f л Температура смеси: %.4f °C\n", base.volume, base.temperature); base.setTemperature(0); System.out.printf("Объем емкости: %.4f л Температура смеси: %.4f °C\n", base.volume, base.temperature); try { base.setTemperature(-1000); System.out.println("Это сообщение не должно быть выведено, потому что температура должна быть выше абсолютного нуля (-273.15)"); } catch (IllegalArgumentException e) { System.out.println("Ожидалось сообщение : Температура должна быть выше абсолютного нуля (-273.15)"); System.out.println("Фактическое сообщение: " + e.getMessage()); } </div> <div class='task_desc'> В результате запуска программы должно быть выведено сообщение: </div> <div class='check_single preformatted'>Объем емкости: 20,0000 л Температура смеси: 19,0000 °C Объем емкости: 0,0000 л Температура смеси: 19,0000 °C Ожидалось сообщение : Объем должен быть неотрицательным Фактическое сообщение: Объем должен быть неотрицательным Объем емкости: 0,0000 л Температура смеси: 100,0000 °C Ожидалось сообщение : Температура должна быть выше абсолютного нуля (-273.15) Фактическое сообщение: Температура должна быть выше абсолютного нуля (-273.15) Объем емкости: 0,0000 л Температура смеси: -50,0000 °C Объем емкости: 0,0000 л Температура смеси: 0,0000 °C Ожидалось сообщение : Температура должна быть выше абсолютного нуля (-273.15) Фактическое сообщение: Температура должна быть выше абсолютного нуля (-273.15) </div> </div> <div id='task3759' class='task_block'> <div class='task_id'>3759</div> <h3>Задача</h3> <ol start='1'><li>Убедитесь, что вы реализовали класс Force из задачи <a href="tasks 23.html#task8225" target="_blank">ЛР23#8225(открыть в новой вкладке)</a></li><li>Реализуйте метод getModule, который ничего не принимает и возвращает модуль вектора силы.</li><li>Значение вычисляется по формуле: <formula>a<sub>mod</sub>=<sqrt><val>x<sub>a</sub><sup>2</sup> + y<sub>a</sub><sup>2</sup></val></sqrt></formula></li></ol><div class='task_desc'> Сигнатура метода getModule: </div> <div class='check_single preformatted'>public double getModule() {</div> <div class='task_desc'> В методе main класса Program добавьте следующий код: </div> <div class='check_single preformatted'>Force force = new Force(10, 0, 40); double module = force.getModule(); System.out.println("Для силы " + print(force) + " модуль равен " + module); force = new Force(0, 15, 40); module = force.getModule(); System.out.println("Для силы " + print(force) + " модуль равен " + module); force = new Force(0, 0, 40); module = force.getModule(); System.out.println("Для силы " + print(force) + " модуль равен " + module); force = new Force(11, 13, 40); module = force.getModule(); System.out.println("Для силы " + print(force) + " модуль равен " + module); </div> <div class='task_desc'> В результате запуска программы должно быть выведено сообщение: </div> <div class='check_single preformatted'>Для силы (10,00|0,00)->40,00 модуль равен 10.0 Для силы (0,00|15,00)->40,00 модуль равен 15.0 Для силы (0,00|0,00)->40,00 модуль равен 0.0 Для силы (11,00|13,00)->40,00 модуль равен 17.029386365926403 </div> </div> <div id='task2896' class='task_block'> <div class='task_id'>2896</div> <h3>Задача</h3> <h4>Реализуйте класс ReverseCounter</h4> <ol start='1'><li>В папке с исходным кодом создайте класс ReverseCounter.</li><li>Объявите поле для целых чисел с названием current.</li><li>Реализуйте конструктор, инициализирующий поле current. Если значение аргумента меньше 0, то выбросите исключение IllegalArgumentException.</li><li>Создайте нестатический метод tick.</li><li>Метод tick не принимает аргументов и возвращает целое число.</li><li>В теле метода, если значение current больше 0, то уменьшите значение поля current на 1 и верните получившееся значение current.</li><li>Если значение current равно 0, тогда просто верните значение current.</li></ol><div class='task_desc'> В методе main класса Program добавьте следующий код: </div> <div class='check_single preformatted'>ReverseCounter counter = new ReverseCounter(4); int current = counter.tick(); System.out.println(current); current = counter.tick(); System.out.println(current); current = counter.tick(); System.out.println(current); current = counter.tick(); System.out.println(current); System.out.println(counter.tick()); System.out.println(counter.tick()); System.out.println("-----------"); counter = new ReverseCounter(0); System.out.println(counter.tick()); try { new ReverseCounter(-1); System.out.println("Это сообщение не должно быть выведено"); } catch (IllegalArgumentException e) { System.out.println("Ожидалось сообщение : Начальное значение должно быть больше 0"); System.out.println("Фактическое сообщение: " + e.getMessage()); } </div> <div class='task_desc'> В результате запуска программы должно быть выведено сообщение: </div> <div class='check_single preformatted'>3 2 1 0 0 0 ----------- 0 Ожидалось сообщение : Начальное значение должно быть больше 0 Фактическое сообщение: Начальное значение должно быть больше 0 </div> </div> <div id='task5032' class='task_block'> <div class='task_id'>5032</div> <h3>Задача</h3> <div class='task_desc'> Дан прямоугольник с координатами x = 100, y = 100, width = 100, height = 100. Исходный файл содержит список действий над ним в формате CSV (<a href='https://ru.wikipedia.org/wiki/CSV' target='_blank'>справка в новой вкладке</a>) с разделителем ";". Каждое действие описывается на отдельной строчке: наименование и необходимые значения. Нужно посчитать количество обработанных действий, а также получившиеся координаты и размеры прямоугольника. Действия описываются в следующем формате: </div> <ol start='1'><li>Переместить по горизонтали. Наименование shiftX. Значение - целое число, указывает насколько изменится координата прямоугольника по оси Х. Ширина прямоугольника остается прежней.</li><li>Переместить по вертикали. Наименование shiftY. Значение - целое число, указывает насколько изменится координата прямоугольника по оси Y. Высота прямоугольника остается прежней.</li><li>Изменить ширину. Наименование stretchX. Значение - целое число, указывает насколько изменится ширина прямоугольника. Координата верхнего-левого угла при этом не меняется.</li><li>Изменить высоту. Наименование stretchY. Значение - целое число, указывает насколько изменится высота прямоугольника. Координата верхнего-левого угла при этом не меняется.</li></ol><div class='task_desc'> При попытке совершить некорректное действие, вывести количество корректных действий, сообщение об ошибке и прекратить обработку. Ответ вывести в html-файл. Ответ должен содержать количество действий, описание ошибки и два прямоугольника: красный показывает исходное состояние прямоугольника, черный - последнее корректное состояние. Шаблон для печати прямоугольника: </div> <div class='check_single preformatted'><rect x="$x" y="$y" width="$width" height="$height" fill="transparent" stroke="$color"></rect></div> <div class='task_desc'> Перед прямоугольниками нужно написать: "<svg width="500" height="350">", а после них - "</svg>" </div> <table class='check_values_v2'> <tr><th>Номер теста</th><th>Исходные данные (filename)</th><th>Результат</th></tr> <tr><td>1</td><td><a href="files/task5032/test1.csv" target="_blank">скачать test1.csv</a></td><td class='preformatted'><div>Читаю данные из файла \files\task5032\test1.csv</div> <div>Действий: 1</div><svg width="500" height="350"> <rect x="100" y="100" width="100" height="100" fill="transparent" stroke="red"></rect> <rect x="113" y="100" width="100" height="100" fill="transparent" stroke="black"></rect> </svg> </td></tr> <tr><td>2</td><td><a href="files/task5032/test2.csv" target="_blank">скачать test2.csv</a></td><td class='preformatted'><div>Читаю данные из файла \files\task5032\test2.csv</div> <div>Действий: 1</div><svg width="500" height="350"> <rect x="100" y="100" width="100" height="100" fill="transparent" stroke="red"></rect> <rect x="100" y="117" width="100" height="100" fill="transparent" stroke="black"></rect> </svg> </td></tr> <tr><td>3</td><td><a href="files/task5032/test3.csv" target="_blank">скачать test3.csv</a></td><td class='preformatted'><div>Читаю данные из файла \files\task5032\test3.csv</div> <div>Действий: 1</div><svg width="500" height="350"> <rect x="100" y="100" width="100" height="100" fill="transparent" stroke="red"></rect> <rect x="100" y="100" width="119" height="100" fill="transparent" stroke="black"></rect> </svg> </td></tr> <tr><td>4</td><td><a href="files/task5032/test4.csv" target="_blank">скачать test4.csv</a></td><td class='preformatted'><div>Читаю данные из файла \files\task5032\test4.csv</div> <div>Действий: 1</div><svg width="500" height="350"> <rect x="100" y="100" width="100" height="100" fill="transparent" stroke="red"></rect> <rect x="100" y="100" width="100" height="123" fill="transparent" stroke="black"></rect> </svg> </td></tr> <tr><td>5</td><td><a href="files/task5032/test5.csv" target="_blank">скачать test5.csv</a></td><td class='preformatted'><div>Читаю данные из файла \files\task5032\test5.csv</div> <div>Действий: 5</div><svg width="500" height="350"> <rect x="100" y="100" width="100" height="100" fill="transparent" stroke="red"></rect> <rect x="120" y="120" width="110" height="150" fill="transparent" stroke="black"></rect> </svg> </td></tr> <tr><td>6</td><td><a href="files/task5032/test6.csv" target="_blank">скачать test6.csv</a></td><td class='preformatted'><div>Читаю данные из файла \files\task5032\test6.csv</div> <div>Действий: 2</div><div>Ошибка: Координата Y должна быть неотрицательной</div> <svg width="500" height="350"> <rect x="100" y="100" width="100" height="100" fill="transparent" stroke="red"></rect> <rect x="110" y="80" width="100" height="100" fill="transparent" stroke="black"></rect> </svg> </td></tr> <tr><td>7</td><td><a href="files/task5032/test7.csv" target="_blank">скачать test7.csv</a></td><td class='preformatted'><div>Читаю данные из файла \files\task5032\test7.csv</div> <div>Действий: 11</div><div>Ошибка: Координата X должна быть неотрицательной</div> <svg width="500" height="350"> <rect x="100" y="100" width="100" height="100" fill="transparent" stroke="red"></rect> <rect x="10" y="80" width="100" height="120" fill="transparent" stroke="black"></rect> </svg> </td></tr> <tr><td>8</td><td><a href="files/task5032/test8.csv" target="_blank">скачать test8.csv</a></td><td class='preformatted'><div>Читаю данные из файла \files\task5032\test8.csv</div> <div>Действий: 8</div><div>Ошибка: Высота должна быть положительной</div> <svg width="500" height="350"> <rect x="100" y="100" width="100" height="100" fill="transparent" stroke="red"></rect> <rect x="130" y="120" width="50" height="60" fill="transparent" stroke="black"></rect> </svg> </td></tr> <tr><td>9</td><td><a href="files/task5032/test9.csv" target="_blank">скачать test9.csv</a></td><td class='preformatted'><div>Читаю данные из файла \files\task5032\test9.csv</div> <div>Действий: 2</div><div>Ошибка: Ширина должна быть положительной</div> <svg width="500" height="350"> <rect x="100" y="100" width="100" height="100" fill="transparent" stroke="red"></rect> <rect x="100" y="120" width="110" height="100" fill="transparent" stroke="black"></rect> </svg> </td></tr> <tr><td>10</td><td><a href="files/task5032/test10.csv" target="_blank">скачать test10.csv</a></td><td class='preformatted'><div>Читаю данные из файла \files\task5032\test10.csv</div> <div>Действий: 80</div><svg width="500" height="350"> <rect x="100" y="100" width="100" height="100" fill="transparent" stroke="red"></rect> <rect x="66" y="183" width="388" height="159" fill="transparent" stroke="black"></rect> </svg> </td></tr> <tr><td>11</td><td><a href="files/task5032/test11.csv" target="_blank">скачать test11.csv</a></td><td class='preformatted'><div>Читаю данные из файла \files\task5032\test11.csv</div> <div>Файл не найден \files\task5032\test11.csv</div> </td></tr> <tr><td>12</td><td><a href="files/task5032/test12.csv" target="_blank">скачать test12.csv</a></td><td class='preformatted'><div>Читаю данные из файла \files\task5032\test12.csv</div> <div>Действий: 3</div> <div>Некорректное действие: stretchH</div> <div>Последнее корректное состояние:</div> <svg width="500" height="350"> <rect x="100" y="100" width="100" height="100" fill="transparent" stroke="red"></rect> <rect x="100" y="100" width="80" height="120" fill="transparent" stroke="black"></rect> </svg> </td></tr> <tr><td>13</td><td><a href="files/task5032/test13.csv" target="_blank">скачать test13.csv</a></td><td class='preformatted'><div>Читаю данные из файла \files\task5032\test13.csv</div> <div>Действий: 4</div> <div>Ошибка: Некорректный формат</div> <div>Последнее корректное состояние:</div> <svg width="500" height="350"> <rect x="100" y="100" width="100" height="100" fill="transparent" stroke="red"></rect> <rect x="100" y="120" width="95" height="120" fill="transparent" stroke="black"></rect> </svg> </td></tr> <tr><td>14</td><td><a href="files/task5032/test14.csv" target="_blank">скачать test14.csv</a></td><td class='preformatted'><div>Читаю данные из файла \files\task5032\test14.csv</div> <div>Действий: 2</div> <div>Ошибка: Некорректный формат</div> <div>Последнее корректное состояние:</div> <svg width="500" height="350"> <rect x="100" y="100" width="100" height="100" fill="transparent" stroke="red"></rect> <rect x="150" y="115" width="100" height="100" fill="transparent" stroke="black"></rect> </svg> </td></tr> </table> </div> <div id='task3567' class='task_block'> <div class='task_id'>3567</div> <h3>Задача</h3> <div class='task_desc'> Дан круг с координатами центра cx = 150, cy = 150, r = 50. Исходный файл содержит список действий над ним в формате CSV (<a href='https://ru.wikipedia.org/wiki/CSV' target='_blank'>справка в новой вкладке</a>) с разделителем ";". Каждое действие описывается на отдельной строчке: наименование и необходимые значения. Нужно вывести на экран количество обработанных действий, а также получившиеся координаты и размеры круга. Действия описываются в следующем формате: </div> <ol start='1'><li>Переместить по горизонтали. Наименование shiftX. Значение - целое число, указывает насколько изменится координата круга по оси Х. Ширина круга остается прежней.</li><li>Переместить по вертикали. Наименование shiftY. Значение - целое число, указывает насколько изменится координата круга по оси Y. Высота круга остается прежней.</li><li>Изменить ширину. Наименование stretchX. Значение - целое число, указывает насколько изменится ширина круга (dw). При этом координаты центра x, y и радиус изменятся на dw/2.</li><li>Изменить высоту. Наименование stretchY. Значение - целое число, указывает насколько изменится ширина круга (dw). При этом координаты центра x, y и радиус изменятся на dw/2.</li></ol><div class='task_desc'> При попытке совершить некорректное действие, вывести количество корректных действий, сообщение об ошибке и прекратить обработку. Ответ вывести в html-файл. Ответ должен содержать количество действий, описание ошибки и два прямоугольника: красный показывает исходное состояние прямоугольника, черный - последнее корректное состояние. </div> <table class='check_values_v2'> <tr><th>Номер теста</th><th>Исходные данные (filename)</th><th>Результат</th></tr> <tr><td>1</td><td><a href="files/task3567/test1.csv" target="_blank">скачать test1.csv</a></td><td class='preformatted'><div>Читаю файл: files/task3567/test1.csv</div> <div>Действий: 2</div><div>Результат:</div><svg width="500" height="500"><circle cx='150' cy='150' r='100' fill='transparent' stroke='red'/><circle cx='240' cy='250' r='100' fill='transparent' stroke='black'/></svg> </td></tr> <tr><td>2</td><td><a href="files/task3567/test2.csv" target="_blank">скачать test2.csv</a></td><td class='preformatted'><div>Читаю файл: files/task3567/test2.csv</div> <div>Действий: 1</div><div>Результат:</div><svg width="500" height="500"><circle cx='150' cy='150' r='100' fill='transparent' stroke='red'/><circle cx='200' cy='200' r='150' fill='transparent' stroke='black'/></svg> </td></tr> <tr><td>3</td><td><a href="files/task3567/test3.csv" target="_blank">скачать test3.csv</a></td><td class='preformatted'><div>Читаю файл: files/task3567/test3.csv</div> <div>Действий: 1</div><div>Результат:</div><svg width="500" height="500"><circle cx='150' cy='150' r='100' fill='transparent' stroke='red'/><circle cx='175' cy='175' r='125' fill='transparent' stroke='black'/></svg> </td></tr> <tr><td>4</td><td><a href="files/task3567/test4.csv" target="_blank">скачать test4.csv</a></td><td class='preformatted'><div>Читаю файл: files/task3567/test4.csv</div> <div>Действий: 2</div><div>Результат:</div><svg width="500" height="500"><circle cx='150' cy='150' r='100' fill='transparent' stroke='red'/><circle cx='225' cy='125' r='75' fill='transparent' stroke='black'/></svg> </td></tr> <tr><td>5</td><td><a href="files/task3567/test5.csv" target="_blank">скачать test5.csv</a></td><td class='preformatted'><div>Читаю файл: files/task3567/test5.csv</div> <div>Действий: 3</div><div>Результат:</div><svg width="500" height="500"><circle cx='150' cy='150' r='100' fill='transparent' stroke='red'/><circle cx='165' cy='165' r='115' fill='transparent' stroke='black'/></svg> </td></tr> <tr><td>6</td><td><a href="files/task3567/test6.csv" target="_blank">скачать test6.csv</a></td><td class='preformatted'><div>Читаю файл: files/task3567/test6.csv</div> <p>Действий: 1</div><div>Ошибка: Верхняя точка круга должна иметь неотрицательные координаты</div><div>Последнее корректное состояние:</div><svg width="500" height="500"><circle cx='150' cy='150' r='100' fill='transparent' stroke='red'/><circle cx='170' cy='150' r='100' fill='transparent' stroke='black'/></svg> </td></tr> <tr><td>7</td><td><a href="files/task3567/test7.csv" target="_blank">скачать test7.csv</a></td><td class='preformatted'><div>Читаю файл: files/task3567/test7.csv</div> <p>Действий: 2</div><div>Ошибка: Левая точка круга должна иметь неотрицательные координаты</div><div>Последнее корректное состояние:</div><svg width="500" height="500"><circle cx='150' cy='150' r='100' fill='transparent' stroke='red'/><circle cx='140' cy='150' r='90' fill='transparent' stroke='black'/></svg> </td></tr> <tr><td>8</td><td><a href="files/task3567/test8.csv" target="_blank">скачать test8.csv</a></td><td class='preformatted'><div>Читаю файл: files/task3567/test8.csv</div> <p>Действий: 0</div><div>Ошибка: Ширина должна быть положительной</div><div>Последнее корректное состояние:</div><svg width="500" height="500"><circle cx='150' cy='150' r='100' fill='transparent' stroke='red'/><circle cx='150' cy='150' r='100' fill='transparent' stroke='black'/></svg> </td></tr> <tr><td>9</td><td><a href="files/task3567/test9.csv" target="_blank">скачать test9.csv</a></td><td class='preformatted'><div>Читаю файл: files/task3567/test9.csv</div> <p>Действий: 1</div><div>Ошибка: Ширина должна быть положительной</div><div>Последнее корректное состояние:</div><svg width="500" height="500"><circle cx='150' cy='150' r='100' fill='transparent' stroke='red'/><circle cx='155' cy='155' r='105' fill='transparent' stroke='black'/></svg> </td></tr> <tr><td>10</td><td><a href="files/task3567/test10.csv" target="_blank">скачать test10.csv</a></td><td class='preformatted'>Файл не существует </td></tr> <tr><td>11</td><td><a href="files/task3567/test11.csv" target="_blank">скачать test11.csv</a></td><td class='preformatted'><div>Читаю файл: files/task3567/test11.csv</div> <div>Действий: 37</div><div>Результат:</div><svg width="500" height="500"><circle cx='150' cy='150' r='100' fill='transparent' stroke='red'/><circle cx='170' cy='186' r='132' fill='transparent' stroke='black'/></svg> </td></tr> <tr><td>12</td><td><a href="files/task3567/test12.csv" target="_blank">скачать test12.csv</a></td><td class='preformatted'><div>Читаю файл: files/task3567/test12.csv</div> <p>Действий: 2</div><div>Ошибка: Некорректное действие: shitfX</div><div>Последнее корректное состояние:</div><svg width="500" height="500"><circle cx='150' cy='150' r='100' fill='transparent' stroke='red'/><circle cx='210' cy='175' r='125' fill='transparent' stroke='black'/></svg> </td></tr> <tr><td>13</td><td><a href="files/task3567/test13.csv" target="_blank">скачать test13.csv</a></td><td class='preformatted'><div>Читаю файл: files/task3567/test13.csv</div> <p>Действий: 0</div><div>Ошибка: Некорректный формат</div><div>Последнее корректное состояние:</div><svg width="500" height="500"><circle cx='150' cy='150' r='100' fill='transparent' stroke='red'/><circle cx='150' cy='150' r='100' fill='transparent' stroke='black'/></svg> </td></tr> <tr><td>14</td><td><a href="files/task3567/test14.csv" target="_blank">скачать test14.csv</a></td><td class='preformatted'><div>Читаю файл: files/task3567/test14.csv</div> <p>Действий: 1</div><div>Ошибка: Некорректный формат</div><div>Последнее корректное состояние:</div><svg width="500" height="500"><circle cx='150' cy='150' r='100' fill='transparent' stroke='red'/><circle cx='153' cy='153' r='103' fill='transparent' stroke='black'/></svg> </td></tr> </table> </div> Версия 202510. Подборка задач, выбор порядка подачи и подготовка тестовых данных - Крюков Александр, Омск 2013-2026. <a href='https://github.com/AKryukov92/programming-basics'>Основной репозиторий</a></body></html>