как выполнить поиск по индексу из массива - PullRequest
0 голосов
/ 28 октября 2011

я пытаюсь выполнить поиск по индексу строки, она работает, но проблема в том, что она выводит только i [0], что является моей первой записью.если я ищу другую запись, она не работает.Пожалуйста, помогите .. void clist (строка fn [], строка ln [], int size);

int search_list(const string fn[],const string ln[], int size, string find);

int main(){

    string search;

    cout << "This program searches a list .\n";

    const int total = 3;

    string fn[total];
    string ln[total];

    clist(fn,ln, total);

    cout << "Search contact:____  ";

    cin >> search;

    search_list(fn,ln, total, search);

  return 0;

}

void clist(string fn[],string ln[], int size){

    cout << "Enter " << size << " contact.\n";

    for (int index = 0; index < size; index++)
     cin >> fn[index] >> ln[index] ;

}

int search_list(const string fn[], const string ln[],int size, string search){

   for(int i=0;i<size;i++){

     if((fn[i] == search)&& (i < size)){

       cout<<"Result found "<<fn[i]<<" "<<ln[i]<<endl;

      break;

              }

    cout<<"no record found"<<endl;

     break;

    }

}

Ответы [ 2 ]

1 голос
/ 28 октября 2011

Вы делаете цикл и явно указываете ему break из него после первой итерации. Попробуйте написать это так:

bool found = false;
for(int i=0;i<size;i++){
 if(fn[i] == search){ // No need to check for(i < size)
   found = true;
   cout<<"Result found "<<fn[i]<<" "<<ln[i]<<endl;
   break;
 }
}

if(!found)
  cout<<"no record found"<<endl;
0 голосов
/ 28 октября 2011

Вам нужна функция, которая дает элемент для поиска, найти индекс этого элемента.Не пишите это самостоятельно, используйте std::find в массиве

#include <iostream>
#include <string>
#include <algorithm>

int main()
{
   std::string xx[3];
   xx[0] = "zero";
   xx[1] = "one";
   xx[2] = "two";
   int index = std::find(xx, xx+3, "two") - xx;
   if (index < 3) std::cout << "found in position: " << index << endl;
   else std::cout << "not found" << endl;
}

Я думаю, что в вашем случае лучше использовать по крайней мере std::vector или struct для хранения вашей информации сейчас в двухмассивы

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