Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Выглядит логично. Найди комбинацию символов до пробела -- это слово. Проверь: есть ли слово в словаре? Если есть, ничего не делай, если нет, то добавь слово в словарь, уникальных на одно больше.
Правда кодирование слова смущает... А так... Для C программиста всё так и было бы. Весьма вероятно, что в C++ есть более продвинутые методы или функции-нечлены для работы со строками.
Ну да... И название метода wc (ватер клазет) сразу сообщает нам, что необходимо запостить это на говнокод =]
что меня смущает:
1) код почти нечитабельный. например, здесь
[code language="c++"]for(int j = s;j < i;++j){
tw += _t[j];
}
[/code]
можно было использовать strcpy. Плюс зачем строка tw, если она нигде не используется потом? Очевидно, программируя в таком стиле, легко потерять логику
2) вообще утерян смысл программирования класов
3) самое забавное: повторения кода.
[code language="c++"]
bool sa = true;
for(int az = 0; az < _w.size(); ++az)
if(_w[az] == z) sa = false;
if(sa)_w.push_back (z);
[/code]
Почему не отдельные метод?
С точки зрения С++ здесь много чего "не так". К вашим замечаниям можно ещё добавить, что не следует искать что-то в векторе, есть алгоритмы группы find. Функции неявно встроенные. Копируется строка в закрытую переменную. Как я и написал выше, похоже, что это код С программиста на С++. Мы все такие коды писали курсе на втором. На первом нас активно учили структурному программированию, а на втором "новым эффективным методам".
Ясно же, что ни вектор не используется, ни строка, ни сама суть класса. Зато C виден насквозь.
Да. И как обычно.
Хорошо бы всё, что вы считаете говнокодом, сразу писать в комментарии к коду. Иначе можно с разных сторон на код смотреть и обнаружить, что не такое уж и говно. Или на вменяемый код говном обзываться.
Правда кодирование слова смущает... А так... Для C программиста всё так и было бы. Весьма вероятно, что в C++ есть более продвинутые методы или функции-нечлены для работы со строками.
Ну да... И название метода wc (ватер клазет) сразу сообщает нам, что необходимо запостить это на говнокод =]
1) код почти нечитабельный. например, здесь
[code language="c++"]for(int j = s;j < i;++j){
tw += _t[j];
}
[/code]
можно было использовать strcpy. Плюс зачем строка tw, если она нигде не используется потом? Очевидно, программируя в таком стиле, легко потерять логику
2) вообще утерян смысл программирования класов
3) самое забавное: повторения кода.
[code language="c++"]
bool sa = true;
for(int az = 0; az < _w.size(); ++az)
if(_w[az] == z) sa = false;
if(sa)_w.push_back (z);
[/code]
Почему не отдельные метод?
Ясно же, что ни вектор не используется, ни строка, ни сама суть класса. Зато C виден насквозь.
Я потому этот код и не минусую и не плюсую.
Хорошо бы всё, что вы считаете говнокодом, сразу писать в комментарии к коду. Иначе можно с разных сторон на код смотреть и обнаружить, что не такое уж и говно. Или на вменяемый код говном обзываться.
[code]
for(int k = 0; k < i - s; ++k){
int jj = 1;
for(int d = 0; d < k; ++d)
jj *= 10;
z += jj * static_cast<int>(_t[k]);
}
Выдержка из мана:
wc - print newline, word, and byte counts for each file
А так видно, что код начинающим написан