C言語なら俺に聞け(入門編)Part 64
■ このスレッドは過去ログ倉庫に格納されています
0077デフォルトの名無しさん
2010/05/16(日) 19:03:54char b[]="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
char c[]="bbbbbbbbbbbbbbbbbbbbbbbbb";
unsigned short aa=hash(a);
unsigned short bb=hash(b);
unsigned short cc=hash(c);
任意の文字列に対応した数を(0〜0xFFFFの範囲で)得る関数 hash() を書け
例:
unsigned short hash(char* s)
{
unsigned short a=0;
int i=0;
while (s[i]!='\0') {
a+=(unsigned short)s[i];
i++;
}
return(a);
}
これだと hash("abc") と hash("aad")が同じ数になる。 なるべく数の重複は避けたい。
処理が高速で、かつ、数の重複が起きにくくなるように上記の関数を書き直せ
■ このスレッドは過去ログ倉庫に格納されています