Да, стало лучше - спасибо
Да, неплохо. Конечно функции для повторяющихся вычислений было бы правильнее оформить
Елизавета, сравнивать вещественные на равенство - плохая затея. Как раз на следующих лекциях будем про это говорить
Здравствуйте. Лисицкий Илья (8 группа). Это решение задачи по нахождению минимальной строки из введённых:
Да, можно так. Жаль, что в цикле приходится это проверять каждый раз - не пуста ли минимальная строка
Модифицированная версия функции, вычисляющей длину гипотенузы (программа работает корректно и для больших значений параметров):
function Hypot(a, b: real) := Sqrt(a) * Sqrt(b) * Sqrt(a / b + b / a);
begin var a := 1e200; Assert(Hypot(a, a) - a * sqrt(2) < 1e-10); Print(Hypot(a, a)); end.
Да, хорошо. Единственное, три раза вычисляется Sqrt. Нельзя ли уменьшить хотя бы до двух раз?
Может быть, есть решение получше, чем представленное ниже:
function Hypot(a, b: real) := Sqrt(a) * Sqrt(b * (a / b + b / a));
Я бы максимум из a и b нашел
Такой вариант тоже даёт правильный результат:
function Hypot(a, b: real) := 1e154 * Sqrt(a / 1e308 * a + b / 1e308 * b);
begin var a := 1e307; Assert(Hypot(a, a) - a * sqrt(2) < 1e-10); Print(Hypot(a, a)); end.
Ну для a = 1e-307 всё накроется
Добрый вечер, реализовал алгоритм сдвига влево через цепочку Swap-ов. Получилось менее эффективное, но всё-таки интересное решение. Прикрепляю файл с модулем, где описаны все понадобившиеся мне функции, файл с небольшой демонстрацией, а также файл с Unit-тестом для функции. CyclicShift.pas (3.8 КБ) CyclicShiftUnittests.pas (360 Байт) dem_cyclicshift.pas (640 Байт)
Да, интересное решение.
Можно попытаться для ускорения сделать нерекурсивный GCD - но я думаю, что не это - основная проблема.
Мне кажется. что можно циклическую перестановку делать не Swapами, а с помошью одной доп. переменной - как мы делали циклический сдвиг. Тогда время будет не 3n, а n и может это ускорит всё значительно.
Там конечно еще всякие деления по модулю, так что наивный алгоритм с тремя Reverse это наверное не опередит
Здравствуйте, выполнял домашнее задание, и возникла проблема с выводом матрицы, состоящей из значений True/False. Она как-то странно себя ведёт, значения False “прилипают” к предыдущим элементам. Помогите решить, пожалуйста.
a1.Println(6)
Уважаемые студенты! Я обновил программу курса - она незначительно изменилась: Презентации – Google Диск
Обращаю внимание, что первая консультация начнется 8 января в TEAMS в 16.00