【问题标题】:I can't print a vector inside a switch case我无法在开关盒内打印矢量
【发布时间】:2020-10-26 15:31:31
【问题描述】:

这是我在这里的第一个问题。我刚刚开始学习 C++,我被困在这个练习中:

您的程序应该向用户显示一个菜单选项,如下所示:

P--打印矢量
A--添加一个号码
M--显示数字的平均值
S--显示最小的数字
L--显示最大数字
Q--退出

输入您的选择:

基本上,我需要为这些操作做一个菜单。我在打印矢量的部分卡住了。我已经尝试使用(for auto:....)并尝试使用普通索引(int i = 0...),但是向量中的内容没有出现,只有消息"This is your list of numbers:"。我还尝试创建一个函数来确保用户在A 情况下输入了一个整数,但不知道该怎么做:(

这是我的代码:

#include <iostream>
#include <vector>

using namespace std;

int main()
{

    bool control_end = false;
    do
    {
    cout << "Please enter your desired function within the menu: " << endl;
    cout << endl;
    cout << "P--Print list of numbers" << endl;
    cout << "A--Add a number"<< endl;
    cout << "M--Display mean of the number"<< endl;
    cout << "S--Display the smallest number"<< endl;
    cout << "L--Display the largest number"<< endl;
    cout << "Q--Quit "<< endl;
    cout << endl;
    cout << "Enter your choice: ";

    char letra{};
    cin >> letra;

    vector<int> vector{};

    switch(letra)
    {
      case 'A':
      case 'a':
       {
        cout << "Please enter the value (integer) to be added to vector: ";
        int value_add;
        cin >> value_add;
        cout << endl;

        vector.push_back(value_add);

        //(later do it) create a function to ensure that the value is an integer
        break;
       }
      case 'p':
      case 'P':
       {
        cout << "This is your list of numbers: \n";
        for (unsigned int i=0 ;i < vector.size(); i++)
        cout << vector[i] << " ";
        break;
       }
      case 'm':
      case 'M':
        cout << "test M";
        break;

      case 's':
      case 'S':
        cout << "test S";
        break;

      case 'L':
      case 'l':
        cout << "test L";
        break;

      case 'q':
      case 'Q':
        cout << "Thank you for using the program" << endl;
        control_end = true;
        break;

      default:
        cout << "Invalid char. " << endl;
        cout << endl;
        break;
    }
    for(auto vec: vector)
        cout << vec << endl;

    }



      while (control_end !=true);



      return 0;
}

【问题讨论】:

  • 你可能想给变量一个不同的名字,因为“vector”是类。您是否从编译器收到任何警告?注意他们。如果向量为空,这也是您所期望的。你检查过你的调试器了吗?
  • 是的,我会重命名它。但是不,我没有收到任何警告

标签: c++ vector printing switch-statement


【解决方案1】:

您在循环中创建了变量vector,因此在循环结束时该变量被销毁,并在下一次迭代中创建一个新的空变量。因此,如果您希望您的变量在循环迭代之间保留值,您应该在循环范围之外声明它,就像您对变量 control_end 所做的那样。

【讨论】:

  • 如果您对这个答案感到满意,我们邀请您接受它作为答案。很高兴您找到了有效的答案!
  • 这段代码我还是有问题。对,我正在尝试创建一个函数来验证 int value_add 是否为 int。但我没有成功。我有 2 个问题:
  • @RodrigoPortella 每个问题都有一个问题,你有另一个问题创建一个新问题。
  • 啊好吧,对不起!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-11
  • 1970-01-01
  • 1970-01-01
  • 2012-09-08
相关资源
最近更新 更多