Я не могу напечатать вектор внутри корпуса коммутатора

#c #vector #printing #switch-statement

#c #вектор #печать #switch-statement

Вопрос:

Это мой первый вопрос здесь. Я только начинаю изучать 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;
}
  

Комментарии:

1. Возможно, вы захотите присвоить переменной другое имя, поскольку «vector» — это класс. Получаете ли вы какие-либо предупреждения от вашего компилятора? Прислушайтесь к ним. Также это то, что вы ожидаете, если вектор пуст. Вы проверили свой отладчик?

2. Да, я переименую его. Но нет, я не получил от него никакого предупреждения

Ответ №1:

Вы создали переменную vector внутри своего цикла, поэтому в конце цикла переменная уничтожается, а на следующей итерации создается новая пустая. Итак, если вы хотите, чтобы ваша переменная сохраняла значения между итерациями цикла, вы должны объявить ее вне области видимости цикла, так же, как вы сделали с переменной control_end .

Комментарии:

1. Если вы довольны этим ответом, вам предлагается принять его в качестве ответа. Рад, что вы нашли ответ, который сработал!

2. У меня все еще есть проблемы с этим кодом. Правильно, я пытаюсь создать функцию для проверки, является ли значение int value_add значением int. Но я не добился успеха в этом. У меня 2 проблемы:

3. @RodrigoPortella пожалуйста, задавайте по одному вопросу на вопрос, у вас есть еще одна проблема, создайте новую.

4. ах, ладно, извините!!