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) -- встроеная справка