2012-04-12 8 views
-2

ハッシュ関数と線形プロービングアルゴリズムに問題があります。ここに私が持っているものがあります。これは、クラス分けのためのものです。ここでは、ハッシュアルゴリズムを使用して、先月に販売された在庫パーツとその数量のリストを作成するプログラムを作成する必要があります。ハッシュリストを作成した後。ユーザが棚卸商品を検索し、販売数量を報告することを可能にする簡単なメニュー駆動型プログラムを書く。私はこのプログラムを書くことを誰にも求めていませんが、私は自分の機能を作るために何か助けが必要です。建設的なアドバイスとフィードバックをありがとう。 :D:Dハッシングとリニアプロービング

#include<iostream> 
using namespace std; 
int main() 
{  
     int Partnumber[15] = {112,130,156,173,197,150,166,113,123,143,167,189,193,117,176}; 
     int Quantitynumber[15] = {12,30,56,17,19,50,66,13,12,14,16,18,19,11,76}; 
     int hashTable[19][2]; 
     int collisions = 0; 

     for(int i = 0; i<15; i++) 
     {  
       index = (Partnumber[i] % 19); 
       hashTable[index] = Partnumber[i]; 

       if (hashTable[index] != 0) 
       {  
         do { 
           index++ 
         } while(hashTable[index]!=0) 
       }  
       if (index >= sizeOf(hashTable)) 
         index=0; 
       else hashTable[index] = Partnumber[i]; 
     }  
     return 0; 
} 
+0

あなたのactaulの問題は何ですか? – chikuba

+1

ハッシュテーブルは2D配列ですが、常に1Dとして参照しています。どうして? hashTable [index]をasigningした直後に、それが0であるかどうかをチェックします(これは保証されていません)。少なくとも一貫したインデントが役立つでしょう。 –

+0

ええ、私はハンター氏がこれ以上いくつか作業し、結果を数時間で返すことに気づいた。ありがとう – jwill22

答えて

0

あなたが近づいているように見えます。あなたは、必要なコード行のほとんどを持っています。彼らはちょうどすべて正しい場所にいるわけではありません。そして、すべて正確に正しいわけではありません。

あなたはおそらく、これはまだコンパイルdoes'tあなたはhashTable[index] = Partnumber[i];

を設定しているあなたのコード内の場所に難しく見たいと思うかもしれません。 Quantitynumber[i]に何かを割り当てたいですか?

これは単なるおもちゃの例であると認識していますが、私はそのようなことを格付けしていたときに、15,19の数値を変数や定数に入れるのではなく、もっと便利なものにしました:

const int partCount = 15; 

int Quantitynumber[partCount]; 
関連する問題