Files
lab1_git/lab0_letsbegin/README.md
renka 64e0fd19a7 lol
2025-10-04 08:09:12 -04:00

75 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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