## letsbegin Копия README.md на сайте `https://timplab.syktsu.ru/131/lab0_letsbegin` ``` Пользователи VM user/user root/root ``` ### Задачи * Развернуть ВМ `debian 13`. * shell intro * потыркать gcc, vim/gedit/code (visual studio code), man * Вспомнить/почитать про указатели в C * Написать helloworld -- программу, которая печатает helloworld ^_^. Скомпилявить её с помощью gcc и запустить. * написать функции * написать функцию `mystrlen` (функция, печатающая длину строки) Интерфейс функции: ``` int mystrlen(const char *s); ``` * написать функцию `mystr_idx`, которая находит индекс строки **substr** в строке **str** или -1, если такой подстроки нет. Интерфейс функции: ``` int mystr_idx(char *str, char *substr); ``` Примеры работы: ``` mystr_idx("helloworld", "world") == 5 mystr_idx("helloworld", "helloworld") == 0 mystr_idx("helloworld", "foo") == -1 ``` * Написать функцию `sum` (функция должна суммировать int-массив). Какой будет её интерфейс? * Написать функцию `fib`, считающая n-ный элемент последовательности фибоначи ``` int fib(int n); ``` * функция `myatoi` (*), которая конвертит входную строку в чиселко. ``` int myatoi(char *instr); ``` Примеры работы: ``` myatoi("1") == 1 myatoi("42") == 42 myatoi("-105") == -105 ``` Дополнительное задание -- обновить интерфейс функции, чтобы была возможность указывать базу входного чиселка для конвертации. Дополнительное задание -- что нам делать, если мы хотим отлавливать ошибки функции (например когда ей передали не число) Дополнительное задание -- что будет если запустить `myatoi("18446744073709551617")`(18446744073709551617 == 2 ** 64 + 1) ? Почему результат именно такой? ## help Для работы вам могут пригодится следующие команды и утилиты: * cd, ls(1), mv(1), cat(1), pwd(1) -- утилиты для навигации в консоли * gcc(1) -- компилятор С * diff(1) -- утилита для поиска различий между двумя текстовыми файлми может пригодится для тестов * rm(1) -- утилита для удаления файлов * code -- Среда разработки VSCode * vim(1) -- текстовый редактор * man(1) -- встроеная справка