2011-03-02 106 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正确的结果。