Тёмный

Практика языка C (МФТИ, 2023-2024). Семинар 2.3. Время и случайность. 

Konstantin Vladimirov
Подписаться 21 тыс.
Просмотров 6 тыс.
50% 1

Опубликовано:

 

4 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 24   
@РусланКарнеенко
@РусланКарнеенко 11 месяцев назад
Спасибо Вам огромное. Ваши видео по ассемблеру это шедевры.
@magicmetal8679
@magicmetal8679 7 месяцев назад
Константин, спасибо за Труд, смотрю с удовольствием. Позвольте покритиковать вашу реализацию problem_pe. 1) Вы как-то очень смело сравниваете внутри fill() в циклах индексы с "n*8+1", но это отличный шанс улететь за границы массива при упаковке по 8 флагов в n байтах. Надо бы "< sv->n*8", хватаем диапазоны [0,7] в 1 байте, [0,15] в двух и т.д - то, что надо. 2) По поводу main() Справедливости ради, надо сказать, что main(), в данном случае - не часть решения, скорее - элемент теста, но и о его качестве желательно позаботиться. 2.1) Запросить массив на 1 char больше, выделяя память calloc'ом в main(), при целочисленном делении n/8 точно не помешает, из-за округления последним битикам может не достаться байта для хранения - опять выход за границы массива. Правда, тут ни этого, ни самого деления не надо, раз уж выяснилось, что по условию задачи, n - число байтов в массиве решета. 2.2) Само собой, надо проверить ввод данных и результат выделения памяти. 3) Вместо "8" красивее везде использовать CHAR_BIT из limits.h, или хотя бы добавить assert(CHAR_BIT==8), вы упоминали про возможность другой ёмкости char'ов (и байтов - минимально адресуемых единиц). Прямой эфир, явный цейтнот - вопросов нет. А в комментариях, придирки мои, возможно, лишними не будут. Всем успехов, ещё раз спасибо!
@tilir
@tilir 7 месяцев назад
Спасибо за конструктив. Указывайте пожалуйста таймкоды к которым даёте комментарий, я может быть включу что-то из этого в эррата.
@myrrrca
@myrrrca 9 месяцев назад
32:45 последовательность псевдослучайных чисел начала повторяться не с 97 итерации а примерно с 48
@Андрей-м6г8т
@Андрей-м6г8т 11 месяцев назад
Концовка бомбическая
@alex_s_ciframi
@alex_s_ciframi 10 месяцев назад
ИИ никогда не одолеет человека :D
@maximpahomov3977
@maximpahomov3977 5 месяцев назад
4:20 разве времени хватит не на 68 (лет) * 2^32 (секунд). На видео было: 68 (лет) * 2^32 (лет).
@einvagen
@einvagen 11 месяцев назад
32:07 после 48 числа последовательность начинает повторяться) для любого x
@tilir
@tilir 11 месяцев назад
Да, спасибо за внимательность.
@limitholdem3621
@limitholdem3621 10 месяцев назад
5:44 Вы же обещали это вырезать ))
@tilir
@tilir 10 месяцев назад
Забыл при монтаже. Но я думаю ничего страшного. Я зато не забыл вырезать многие куда более раздражающие моменты.
@sergeykirdyankin7027
@sergeykirdyankin7027 11 месяцев назад
не знаю как в ПК устроено, но на микроконтроллерах real-time-clock тактируется от отдельного генератора (обычно 32768Гц), а время выполнения (например на ARM-ах) можно замерить по отдельному счётчику тактов ядра
@tilir
@tilir 11 месяцев назад
Я думаю разных микроконтроллеров слишком много чтобы говорить за все ))
@DART2WADER
@DART2WADER 11 месяцев назад
rand))) не прошло бы если принудительно не кастовать.
@stanislavstanislavius7618
@stanislavstanislavius7618 11 месяцев назад
16:19 У меня вопросы по поводу функции diff. Зачем внутри нее создавать еще timespec temp? Зачем манипуляции с вычитанием одной секунды, а также константами ...AS_NSEC? Можно ведь данную функцию реализовать так: double diff(struct timespec* tsStart, struct timespec* tsEnd) { double nSecStart = (*tsStart).tv_nsec, nSecEnd = (*tsEnd).tv_nsec, nSecDuration; if (nSecStart > nSecEnd) nSecDuration = nSecStart - nSecEnd; else nSecDuration = nSecEnd - nSecStart; return ((*tsEnd).tv_sec - (*tsStart).tv_sec + nSecDuration / 1000000000); } Или в моей реализации будут проблемы с точностью из-за неявного приведения к double?
@tilir
@tilir 11 месяцев назад
Так хм. Вы тестов-то написали?
@stanislavstanislavius7618
@stanislavstanislavius7618 11 месяцев назад
@@tilir нет тестов я не писал. Но я опробовал игрался с данной функцией на примитивной реализации Фибоначи (рекурсивной). А также опробовал ее просто выводя строку на экран - это уже делал в годболте чтобы хоть какое-то время увидеть. Или мне нужно было тест написать для самой функции?
@ddvamp
@ddvamp 3 месяца назад
18:07 Константин, не знаю С, но разве здесь не переполнение?
@tilir
@tilir 2 месяца назад
Да должно быть 1ull если писать нормативно, но это иллюстративный материал, а не исполняемый код, я опускаю детали.
@РоманМитин-п4т
@РоманМитин-п4т 11 месяцев назад
21:06 Всё-таки 2 гигогерца это 2 * 10^9 тактов в секунду, поэтому проверка займёт намного меньше времени чем 10 часов. 2^50 это ещё не слишком большое число
@tilir
@tilir 11 месяцев назад
Ну возьмите 2^55
@tilir
@tilir 11 месяцев назад
@@billjohnes9380 я боюсь у вас тривиальные проблемы с математикой. Попробуйте подумать.
@tilir
@tilir 11 месяцев назад
Спасибо за настойчивость. Тривиальные проблемы с математикой тут были у меня. Внёс в errata.
@tilir
@tilir 11 месяцев назад
Ну эррату легко редактировать в отличие от собственно видео. Поправил.
Далее
Сколько стоит ПП?
00:57
Просмотров 355 тыс.
TRENDNI BOMBASI💣🔥 LADA
00:28
Просмотров 781 тыс.
06.01.  Serialization
1:09:06
Просмотров 202