2011-10-27 66 views
-1

即时尝试执行索引搜索的字符串,它运行,但问题是,它只打印出我[我]的第一个条目。如果我查找另一个条目,它不起作用。请帮忙.. void clist(string fn [],string 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; 

    } 

} 
+0

使用至少std::vectorstruct来存储你的信息,现在它是一个功课?请将其标记为作业 –

+0

将来,您不需要在一天内三次创建相同的问题。如果您想添加新的或附加信息,您可以编辑您的问题。 – Blastfurnace

回答

1

您正在制作一个循环,并在第一次迭代之后明确告诉它。试试像这样写:

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

谢谢你,就在我面前。我有一个关于记录的问题。你是如何学习C++的。我想学习,我真的很挣扎。除了练习之外的任何建议,教程或建议。因为当你发现像这样的错误时,单独练习是不够的。 – user836910

+0

@ user836910:大多数人都喜欢你,只是在练习。下一次你犯这样的错误时,你会知道该找什么,只有在与之斗争之后才会发生。 –

0

你需要一个函数给出一个元素进行搜索,找到该元素的索引。不要把它写自己,用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; 
} 

我觉得你的情况最好还是在两个数组

+0

看起来像功课。也许OP不能使用'std :: find()'? –

+0

谁是OP?但是,是的...这似乎是一个功课 –

+0

OP代表“原始海报”,谁提出问题的人/开始线程。 –