【问题标题】:linear searches in 2d arrays二维数组中的线性搜索
【发布时间】:2011-03-02 17:15:59
【问题描述】:
    #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):A 腿(#2):T

旅行#:2 目的地名称:佛罗里达 腿(#1):S 腿(#2):F

所以

行程数 = 2

travel_int 存储 2 个行程,每个行程有 2 条腿

行程编号的 2 种行程类型中的行程类型存储

当我输入 A 或 T 时,它会按原样打印出 Austin,但是当我输入 S 或 F 时,它会返回未找到的目的地 =/。我是在搜索错误,还是打印语句错误。或者是我的回报-1;。 (我会放代码,但它有点长..)

【问题讨论】:

  • 没有什么可以从解释或代码解释。请描述这些数组包含什么,您要搜索什么以及这个目标包含什么。

标签: c


【解决方案1】:

在您的嵌套循环中,您将返回 -1,而无需在整个数组中进行完整搜索

将 return -1 放在所有 for() 循环之外。

   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 时获得正确结果的唯一原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 2017-09-12
    相关资源
    最近更新 更多