Update main.cpp#1
Conversation
Rorikss
left a comment
There was a problem hiding this comment.
В целом, неплохая работа! Хорошо, что не "убежала" память, здорово, что пытались разделить логику. Правда, все еще есть куда расти, обратите внимание на замечания, особенно про разделение логики
| const int MAX_LINE_LENGTH = 1024; | ||
| const int MAX_FILTER = 128; | ||
| const int MAX_CONTEXT_LENGTH = 128; | ||
| const int MAX_WORDS = 10000; | ||
|
|
||
| void parseArgs(int argc, char* argv[], char* inputPath, char* filterdb, char* outputPath) { |
There was a problem hiding this comment.
конечно, это не портит работоспособность кода, но я бы советовала Вам все же придерживаться кодстайла, к которому мы привыкали целый семестр. Все же так код становится более читаемым. Не вижу смысла в данной работе править вам кодстайл, но оставлю как замечание в начале
| } | ||
| } | ||
|
|
||
| char** readFilters(const char* filterdb, int& filterCount) { |
There was a problem hiding this comment.
ссылка весит 8 байт, когда int-- 4. тут можно без ссылки
| std::strcpy(filters[filterCount++], line); | ||
| } | ||
|
|
||
| file.close(); |
There was a problem hiding this comment.
можно не закрывать сам бы закрылся
(тоже некритичное замечание)
| delete[] filters; | ||
| } | ||
|
|
||
| void processFile(const char* inputPath, const char* outputPath, char** filters, int filterCount) { |
There was a problem hiding this comment.
Хорошо, что вы решили разделить немноголо логику на функции, но конкретно эта слишком большая. Стоило бы разделить чтение, анализ файла и вывод
| if (containsFilter(word, filters, filterCount, matchedFilter)) { | ||
| int len = strlen(word); | ||
| discardedSizes[discardedCount] = len; | ||
| std::strcpy(discardedWords[discardedCount], word); | ||
|
|
||
| for (int i = 0; i < filterCount; ++i) { | ||
| if (strcmp(filters[i], matchedFilter) == 0) { | ||
| filterUsage[i]++; | ||
| usedFilterIndex[discardedCount] = i; | ||
| break; | ||
| } | ||
| } | ||
| discardedCount++; | ||
| } else { | ||
| outputFile << word << " "; | ||
| } |
There was a problem hiding this comment.
вот тут можно было бы проифать ваш else, сделать continue и избежать вложенности
| } | ||
| } | ||
|
|
||
| if (relevantCount > 0) { |
| filters[filterCount] = new char[strlen(line) + 1]; | ||
| std::strcpy(filters[filterCount++], line); |
There was a problem hiding this comment.
вот, кстати, как будто не регисронезависимо
No description provided.