Курс Основы программирования ФИИТ 1 семестр 2021-22 гг

Да, стало лучше - спасибо

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

Елизавета, сравнивать вещественные на равенство - плохая затея. Как раз на следующих лекциях будем про это говорить

Здравствуйте. Лисицкий Илья (8 группа). Это решение задачи по нахождению минимальной строки из введённых:

1 лайк

Да, можно так. Жаль, что в цикле приходится это проверять каждый раз - не пуста ли минимальная строка

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

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 Байт)

1 лайк

Да, интересное решение.

Можно попытаться для ускорения сделать нерекурсивный GCD - но я думаю, что не это - основная проблема.

Мне кажется. что можно циклическую перестановку делать не Swapами, а с помошью одной доп. переменной - как мы делали циклический сдвиг. Тогда время будет не 3n, а n и может это ускорит всё значительно.

Там конечно еще всякие деления по модулю, так что наивный алгоритм с тремя Reverse это наверное не опередит

Здравствуйте, выполнял домашнее задание, и возникла проблема с выводом матрицы, состоящей из значений True/False. Она как-то странно себя ведёт, значения False “прилипают” к предыдущим элементам. Помогите решить, пожалуйста.

a1.Println(6)

Уважаемые студенты! Я обновил программу курса - она незначительно изменилась: Презентации – Google Диск

Обращаю внимание, что первая консультация начнется 8 января в TEAMS в 16.00