- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
class WordCount{
private:
string _t;
vector <int> _w;
int wc(){
string tw;
int s = 0;
for(int i = 0; i < _t.size(); ++i){
if(_t[i] == ' '){
tw.clear();
for(int j = s;j < i;++j){
tw += _t[j];
}
size_t z = 0;
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]);
}
bool sa = true;
for(int az = 0; az < _w.size(); ++az)
if(_w[az] == z) sa = false;
if(sa)_w.push_back (z);
s = i+1;
}
}
if(s < _t.size() ){
size_t z = 0;
for(int k = s;k < _t.size();++k){
int jj = 1;
for(int d = 0; d < k; ++d)
jj *= 10;
z += jj * static_cast<int>(_t[k]);
}
bool sa = true;
for(int az = 0; az < _w.size(); ++az)
if(_w[az] == z) sa = false;
if(sa)_w.push_back (z);
}
return _w.size();
}
public:
int WordCount(string text){
_t = text;
return wc();
}
};
Клас, который должен был подсчитывать кол-во уникальных слов в строке.
Наслаждайтесь, господа!
guest 21.10.2009 08:09 # 0
Правда кодирование слова смущает... А так... Для C программиста всё так и было бы. Весьма вероятно, что в C++ есть более продвинутые методы или функции-нечлены для работы со строками.
Ну да... И название метода wc (ватер клазет) сразу сообщает нам, что необходимо запостить это на говнокод =]
hacker-l0maker 21.10.2009 11:37 # +1
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]
Почему не отдельные метод?
interested 21.10.2009 11:54 # +2
Ясно же, что ни вектор не используется, ни строка, ни сама суть класса. Зато C виден насквозь.
Я потому этот код и не минусую и не плюсую.
interested 21.10.2009 12:00 # 0
Хорошо бы всё, что вы считаете говнокодом, сразу писать в комментарии к коду. Иначе можно с разных сторон на код смотреть и обнаружить, что не такое уж и говно. Или на вменяемый код говном обзываться.
guest 21.10.2009 10:06 # +1
guest 21.10.2009 15:38 # 0
[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]);
}
Lexey 21.10.2009 12:34 # +1
hacker-l0maker 21.10.2009 13:11 # 0
guest 30.10.2009 01:18 # +1
guest 21.10.2009 13:47 # 0
Выдержка из мана:
wc - print newline, word, and byte counts for each file
guest 21.10.2009 15:05 # 0
guest 21.10.2009 15:20 # 0
guest 21.10.2009 17:25 # 0
guest 30.10.2009 01:17 # 0
А так видно, что код начинающим написан