Skip to content

Conversation

@HGRaicer
Copy link

Добавлена функция из TODO листа - stringCapitalize. Сделана через конечные автоматы, с использованием ранее реализованных в проекте функций проверки на букву и перевода буквы в верхний регистр. Так же добавлена функция проверки на разделитель, чтобы код было более читаемым. в тесты так же добавлена проверка новой функции.
Функция должна быть добавлена, так как выполняет один из пунктов в TODO.

}

void stringCapitalize(TString *s){
typedef enum Tstate{
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Очень красивое применение конечных автоматов! Конечно на много понятнее был бы код, если просто для каждой буквы проверять, что перед ней был разделитель
Но крайне интересно увидеть здесь КА, хорошая работа

Comment on lines +916 to +917
char sep[5] = {' ', '\t', '\n', ',', '.'};
for (int i=0; i<5; i++){
Copy link
Owner

@Tnirpps Tnirpps May 24, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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++){
  1. Можно создать массив, не указывая длину, а затем используя sizeof подсчитать её. Это полезно, так как в случае если захотим добавить новый символ в массив разделителей, то придётся только дописать его в конец, ничего больше не изменяя в коде
  2. Лучше объявить массив static const char чтобы подчеркнуть, что это некая константа и помочь компилятору в оптимизации кода

}

void test_stringCapitalize(){
TString s1 = stringInitWithCharArr("Hello, World! testing remove");
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Можно было бы добавить ещё вид тестов, где несколько разделителей идёт подряд

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants