-
Notifications
You must be signed in to change notification settings - Fork 16
Add stringCapitalize #10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
| } | ||
|
|
||
| void stringCapitalize(TString *s){ | ||
| typedef enum Tstate{ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Очень красивое применение конечных автоматов! Конечно на много понятнее был бы код, если просто для каждой буквы проверять, что перед ней был разделитель
Но крайне интересно увидеть здесь КА, хорошая работа
| char sep[5] = {' ', '\t', '\n', ',', '.'}; | ||
| for (int i=0; i<5; i++){ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| char sep[5] = {' ', '\t', '\n', ',', '.'}; | |
| for (int i=0; i<5; i++){ | |
| static const char sep[] = {' ', '\t', '\n', ',', '.'}; | |
| size_t len = sizeof(sep) / sizeof(*sep) | |
| for (int i=0; i < len; i++){ |
- Можно создать массив, не указывая длину, а затем используя
sizeofподсчитать её. Это полезно, так как в случае если захотим добавить новый символ в массив разделителей, то придётся только дописать его в конец, ничего больше не изменяя в коде - Лучше объявить массив
static const charчтобы подчеркнуть, что это некая константа и помочь компилятору в оптимизации кода
| } | ||
|
|
||
| void test_stringCapitalize(){ | ||
| TString s1 = stringInitWithCharArr("Hello, World! testing remove"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Можно было бы добавить ещё вид тестов, где несколько разделителей идёт подряд
Добавлена функция из TODO листа - stringCapitalize. Сделана через конечные автоматы, с использованием ранее реализованных в проекте функций проверки на букву и перевода буквы в верхний регистр. Так же добавлена функция проверки на разделитель, чтобы код было более читаемым. в тесты так же добавлена проверка новой функции.
Функция должна быть добавлена, так как выполняет один из пунктов в TODO.