2012-04-12 3 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

당신의 아큐랄 문제는 무엇입니까? 당신이 시작한 다음 더 나은 때 여기에 특정 문제가 있었는데 여기에 왔어 :) – chikuba

+1

해시 테이블은 2D 배열이지만 항상 1D로 참조; 왜? hashTable [index]를 asigning 한 직후, 당신은 그것이 0인지를 검사한다. 적어도 일관된 들여 쓰기가 도움이 될 것입니다. –

+0

그래, 나는 Mr.Hunter가 더 많은 연구를하고 몇 시간 만에 결과를 얻은 것으로 나타났습니다. 감사 – jwill22

답변

0

당신이 가까이오고있는 것처럼 보입니다. 대부분의 필요한 코드 줄이 있습니다. 그들은 모두 올바른 장소에있는 것은 아닙니다. 그리고 모두 정확하지는 않습니다.

는 당신이 hashTable[index] = Partnumber[i];

을 설정하는 경우 당신은 당신의 코드의 위치에서 열심히 볼 수도 있습니다

은 아마도이 아직 컴파일 does't. Quantitynumber[i]에 뭔가를 지정 하시겠습니까?

나는 이것이 단지 장난감의 예일 뿐이지 만, 그런 것들을 채점 할 때 변수 또는 상수 (더 나은)에 넣는 대신 숫자 값 15와 19를 사용하기를 당신에게 고정 시켰을 것입니다 :

const int partCount = 15; 

int Quantitynumber[partCount];