需要帮助以在没有用户同意的情况下停止程序终止

时间:2016-03-20 07:05:14

标签: c++ visual-studio visual-c++ runtime runtime-error

以下代码应该如下所示:

  1. 创建用户指定的列表

  2. 要求用户输入数字

  3. 3.a)如果数字在列表中,显示数字* 2,请返回步骤2

    3.b)如果号码不在列表中,则终止程序

    然而,步骤3.a)也会终止程序,这会破坏while循环的目的。

    这是代码:

    #include <iostream>
    #include <array>
    using namespace std;
    int main()
    {
    cout << "First we will make a list" << endl;
    
    array <int, 5>list;
    int x, number;
    bool isinlist = true;
    
    cout << "Enter list of 5 numbers." << endl;
    
    for (x = 0; x <= 4; x++)
    {
        cin >> list[x];
    }
    while (isinlist == true)
    {
        cout << "now enter a number on the list to double" << endl;
        cin >> number;
    
        for (x = 0; x <= 4; x++)
        {
            if (number == list[x])
            {
                cout << "The number is in the list. Double " << number << " is " << number * 2 << endl;
            }
            else
                isinlist = false;
        }
    }
    return 0;
    }
    

    有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

我建议你将第3步的功能封装到一个单独的函数中。您可以按如下方式定义函数,然后在main函数中的适当位置调用它。

void CheckVector(vector<int> yourlist)
{
  .... // Take user input for number to search for
  .... // The logic of searching for number. 
  if (number exists)
  {
    // cout twice the number
    // return CheckVector(yourlist)
  }
  else
    return;
}

可以使用goto语句实现相同的功能,从而避免使用函数。但是,使用goto被视为不良做法,我不会推荐它。

答案 1 :(得分:0)

您的问题是,只要列表中的单个值不等于用户输入,就会将isinlist设置为false。

你应该在你的while循环开始时将isinlist设置为false,如果找到匹配则将其更改为true。

使用调试器步进代码可以帮助您了解问题。我鼓励你试一试。