如何使用现有代码创建用户定义的矢量大小?

时间:2016-11-17 01:48:23

标签: c++

我有一个程序,它从用户那里获得10个“购买价格”,并在控制台屏幕中显示它们。我正在尝试修改代码,以便用户可以确定他们喜欢“购买价格”的输入数量,然后在控制台屏幕上显示这些数量。

当前修改i成功改变的是向量内的for循环,从“(int i = 0; i <10; i ++)”到“for(int i = 0; i&lt; purchases。 size(); i ++)“但是从这里开始我被卡住了。

似乎我可能需要在向量声明之前使用一些函数或循环来根据用户条目设置size变量,但我不确定。谢谢你的帮助 -

我的代码:

vector<double> purchases(10);
{

    for (int i = 0; i < purchases.size(); i++)
    {
        cout << "Enter a purchase amount: ";
        cin >> purchases[i];
    }

    cout << "The purchase amounts are: " << endl;

    for (int i = 0; i < 10; i++)
    {
        cout << purchases[i] << endl;
    }
}

system("PAUSE");
return (0);

}

1 个答案:

答案 0 :(得分:2)

我可以想到以下方法。

  1. 询问用户他们想要输入的购买数量。然后,创建具有该大小的vector

    int num;
    cout << "Enter the number of purchases: ";
    cint >> num;
    
    vector<double> purchases(num);
    for (int i = 0; i < num; i++)
    {
       cout << "Enter a purchase amount: ";
       cin >> purchases[i];
    }
    
    cout << "The purchase amounts are: " << endl;
    
    for (int i = 0; i < num; i++)
    {
       cout << purchases[i] << endl;
    }
    
  2. 在询问用户购买价格时,请提供输入其他内容以停止的选项。每次成功阅读后,请使用push_back

    vector<double> purchases;
    while ( true )
    {
       std::string s;
       cout << "Enter a purchase amount or q to stop: ";
       cin >> s;
       if ( s == "q" )
       {
          break;
       }
    
       std::istringstream str(s);
       double purchase;
       str >> purchase;
       purchases.push_back(purchase);
    }
    
    cout << "The purchase amounts are: " << endl;
    
    size_t num = purchases.size();
    for (int i = 0; i < num; i++)
    {
       cout << purchases[i] << endl;
    }