簡體   English   中英

我無法在開關盒內打印矢量

[英]I can't print a vector inside a switch case

這是我的第一個問題。 我剛剛開始學習 C++,我被困在這個練習中:

您的程序應該向用戶顯示一個菜單選項,如下所示:

P--打印向量
A--加號
M--數字的顯示均值
S--顯示最小的數
L--顯示最大數
Q--退出

輸入您的選擇:

基本上,我需要為這些操作做一個菜單。 我被困在打印矢量的部分。 我已經嘗試使用 ( for auto:.... ) 並且還嘗試使用普通索引 ( int i = 0... ),但是向量中的內容沒有出現,只有消息"This is your list of numbers:" 我還嘗試創建一個 function 以確保用戶在A案例中輸入了 integer,但不知道該怎么做:(

這是我的代碼:

#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 ,因此在循環結束時變量被銷毀,並在下一次迭代中創建一個新的空變量。 因此,如果您希望您的變量在循環迭代之間保留值,您應該在循環 scope 之外聲明它,就像您對變量control_end所做的一樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM