首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >搜索floop在第一次通过时起作用,但在第二次时无效

搜索floop在第一次通过时起作用,但在第二次时无效
EN

Stack Overflow用户
提问于 2015-02-18 13:27:18
回答 3查看 31关注 0票数 0

我使用这个函数来搜索用户输入的数字,即x。其想法是,用户输入马拉松比赛中的跑步者的号码,程序输出该号码所属的跑步者的信息。如果用户输入0,循环也应该结束。

问题是,它要么只在第一次起作用,第二次不起作用,要么根本不起作用,只显示runner[0]的信息。

这是代码(对于西班牙语,很抱歉)

代码语言:javascript
运行
复制
void search(race *runner){

    int flag = 1;
    int x;
    while (flag = 1){

        cout << "Porfavor entre el numero del corredor, si desea terminar la busqueda entre el numero 0 "<<endl;
        cin >> x;
        cout << endl;
        for (int i = 0; i < size-1; i++){

            if (x = runner[i].number)
                cout << "El corredor que usted busca es " <<
                runner[i].name << " con el numero " << runner[i].number<<endl;

            if (x = 0)
                flag = 0;

            }

        }


    }
EN

Stack Overflow用户

发布于 2015-02-18 13:35:58

除了明显的修改之外

代码语言:javascript
运行
复制
while (flag = 1){

代码语言:javascript
运行
复制
while (flag == 1){
      //    ^^^

和变化

代码语言:javascript
运行
复制
        if (x = runner[i].number)

代码语言:javascript
运行
复制
        if (x == runner[i].number)
        //    ^^^

您可以通过将检查x是否等于0的位置移动到代码中来避免一些不必要的工作。

代码语言:javascript
运行
复制
// while (flag = 1){
// This is also wrong.

while (flag == 1){

   cout << "Porfavor entre el numero del corredor, si desea terminar la busqueda entre el numero 0 "<<endl;
   cin >> x;
   cout << endl;
   if ( x == 0 )
   {
      flag = 0;
      // No need to go through the loop for this case.
   }
   else
   {
      for (int i = 0; i < size-1; i++){

         if (x == runner[i].number)
            cout << "El corredor que usted busca es " <<
               runner[i].name << " con el numero " << runner[i].number<<endl;
      }
   }
}
票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28576579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档