f.f.o. :: /add |
Александр Фенстер |
add@fenster.name | fenster.name |
Третий курс ФИТ, предмет «парадигмы программирования», язык Haskell:
charToDigit c = (findIndex (== c) "0123456789abcdefghijklmnopqrstuvwxyz") |
int charToDigit(char c) |
Первый курс ММФ, предмет «программирование», язык C, дополнительное задание: написать программу,
копирующую input.txt
в output.txt
.
FILE *f = fopen("input.txt", "r"); |
Первый курс ММФ, предмет «программирование», после нескольких наступаний на грабли вида «сегфолт при чтении из несуществующего файла» студенты начинают обрабатывать ошибки:
inf = fopen("input.txt", "r"); |
"памяти нема"
, если malloc
вернул NULL
—
впрочем, чего это я стебусь, это же надо только приветствовать...)
Первый курс ММФ, предмет «программирование», по плану каждому студенту нужно решить пятнадцать задач:
$ cd /home/........; ls *.c |
Первый курс ФИТ, предмет «программирование на языке высокого уровня», задание «архиватор Хаффмана». Здесь просто рассказ,
без кода. Принимаю архиватор. Смотрю код, затем, как обычно, скриптом сжимаю, разжимаю и сравниваю diff
'ом
тестовый набор файлов — всё сходится. Готов уже пойти ставить плюсик в табличку, но что-то заставляет меня
сказать ls -l
в каталоге, в котором лежат тесты и их заархивированные варианты. Выясняется, что
«архиватор» из-за косяка при выводе стабильно создаёт архивы раза в четыре больше исходного файла, но при этом
из-за косяка при вводе вполне корректно их распаковывает. Мораль: будьте бдительны всегда...
Тот же автор, задание «калькулятор с длинной арифметикой». Вашему вниманию предлагается кусок
заголовочного файла long.h
:
long_int *add(long_int *a, long_int *b); |
Воистину, слава операционной системе Linux, благодаря которой всё это остаётся на сервере, а не пропадает на домашних компьютерах моих любимых студентов.