линейный поиск в 2d массивах - PullRequest
1 голос
/ 02 марта 2011
    #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] содержит числоof leg_type - это место, где я храню символ каждой ноги

. Я хочу, чтобы он просматривал тип leg_type, пока не найдет указанный символ.Без указателей.

РЕДАКТИРОВАТЬ

Например, Поездка №: 1 Имя пункта назначения: Остин Нога (# 1): Нога (# 2): T

Поездка №: 2 Имя пункта назначения: Флорида Этап (# 1): S Этап (# 2): F

т. Е.

номер поездки = 2

travel_int магазины 2поездки и каждая поездка имеет 2 ножки

магазины типа ног в 2 типах ветвей с номером поездки

Когда я вставляю A или T, он распечатывает Остин, как должен, но когда я вводю Sили F он возвращает пункт назначения не найден = /.Я неправильно выполняю поиск, или это неверное утверждение для печати.Или это то место, где я возвращаюсь -1 ;.(Я бы поставил код, но он немного длинный ..)

1 Ответ

1 голос
/ 02 марта 2011

В ваших вложенных циклах вы возвращаете -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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...