2011-03-02 71 views
1
#define NUMLEG 7 

    int Search_type(char leg_type[6][10], int travel_int[6][15], int trip_num); 


      c = Search_type(type,leg_type, travel_int, trip_num); 
        if (c == -1) 
        printf("Destination not found.\n"); 
        else 
        printf("Destination Found \nDestination Name:%s", travel_name[c]); 


    int Search_type(char type, char leg_type[6][10], int travel_int[6][15], int trip_num) 
    { 
     int i, n; 
     char target; 
     getchar(); 
     printf("Please enter travel type you wish to search by:"); 
     scanf("%c", &target); 
     for (i =0; i <trip_num; i++) 
     { 
      for (n = 0; n < travel_int[i][NUMLEG]; n++) 
      { 
       if(leg_type[i][n] == target) 
       { 
        return i; 
       } 
      } 
     return -1; 
    } 
} 

這是從我正在從一個項目中工作的一個函數中翻出來的,出於某種奇怪的原因,我似乎無法讓它正確搜索,我知道它沒有代碼的其餘部分,但這一領域,因爲所有其他功能正常工作。所以我決定從代碼中分解出來並測試它。二維數組中的線性搜索

我似乎無法得到它的後1行搜索:

travel_int [I] [NUMLEG]包含腿的數量 leg_type是我保存每條腿

我的焦希望它搜索leg_type直到找到指定的字符。沒有指針。

EDIT

例如 跳閘#:1 目標名稱:奧斯汀 腿(#1):甲 腿(#2):T

跳閘#:2 目標名稱:佛羅里達 腿(#1)表示:S 腿(#2):F

所以

跳閘編號= 2個

travel_int存儲2個遊和每行具有2個腿

腿型存儲在2種腿類型在行程數

當我把在A或T它打印出奧斯汀像它應該但是當我輸入S或F它返回目的地未找到= /。我在做錯誤的搜索,還是錯誤的打印聲明?或者是我把我的回報-1 ;. (我會忍受的代碼,但它有點長..)

+0

沒有什麼可以從爆炸或代碼解釋。請描述這些數組持有什麼,你想要什麼tosearch和這個目標包含什麼。 – Algorithmist 2011-03-02 17:39:34

回答

1

在你的嵌套循環你返回-1沒有做整個陣列完整的搜索。

將所有for()循環外的位置返回-1。

for (i =0; i <trip_num; i++) 
    { 
     for (n = 0; n < travel_int[i][NUMLEG]; n++) 
     { 
      if(leg_type[i][n] == target) 
      { 
       return i; 
       break; 
      } 
     } 

} return -1 

這肯定會使你的程序正常運行。而這是唯一的原因,你當你搜索之旅#01正確的結果。