2d数组中的线性搜索

时间:2011-03-02 17:15:59

标签: c

    #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,直到找到指定的字符。没有指针。

修改

例如 旅行#:1 目的地名称:奥斯汀 腿(#1):甲 腿(#2):T

跳闸#:2 目的地名称:Florida 腿(#1)表示:S 腿(#2):F

所以

旅行号= 2

travel_int存储2次旅行,每次旅行有2条腿

腿型存储在旅行号码的两条腿类型

当我输入A或T时,它打印出奥斯汀就像它应该但是当我输入S或F它返回目的地未找到= /。我做错了搜索,还是打印错误。或者它是我放置我的返回-1;。 (我会提出代码,但有点长......)

1 个答案:

答案 0 :(得分: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时获得正确结果的唯一原因。