2016-11-17 43 views
0

我有一個程序,需要從用戶購買10個「購買價格」,並將它們顯示在控制檯屏幕上。我正在嘗試修改代碼,以便用戶可以確定他們喜歡「購買價格」的輸入數量,然後在控制檯屏幕上顯示它們的數量。如何用我現有的代碼創建用戶定義的矢量大小?

當前修改我成功地改變了for循環內的向量從「(int i = 0; i < 10; i ++)」到「for(int i = 0; i < purchases.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

或'push_back'。 –

+0

或'emplace_back'或'insert' – paddy

回答

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; 
    } 
    
相關問題