Использование локальной переменной вне ее области - PullRequest
0 голосов
/ 06 июня 2018
while(t!=0)
{
    for(j=1;j <=3;j++)
    {
       cin>>size;
       int arrj[size];

       for(i=0;i<3;i++)
       {
           cin>>arrj [i];
       }
    }
}

Как использовать arrj[] вне while loop, поскольку массив является локальной переменной цикла while?

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Как использовать arrj [] вне цикла while , поскольку массив является локальной переменной для цикла while?

У вас есть ответ на ваш вопрос сам.Вы не можете иметь arrj вне первого цикла for, так как он будет удален из стека при выходе из этой области.

Чтобы использовать arrj[], его необходимо объявить перед циклом while:

   int t = 2, size = 10;
   int arrj[size];   // declare before

   while(t!=0)  // this should be t--, otherwise your while loop will not end
   {
      /* code */
   }

Однако, похоже, что массив целых чисел соответствуетпо выбору пользователя, я рекомендую вам использовать std::vector<>, с помощью которого вы можете достичь того, что вы хотите иметь.

   int t = 1, size;
   std::vector<int> arrj; // declare here

   while(t--)
   {
      for(int j=1;j <=3;j++)
      {
         std::cin>> size;
         // resize the vector size as per user choise
         arrj.resize(size);
         // now you can fill the vector using a range based for loop
         for(int& elements: arrj)  std::cin >> elements;

         // or simply
         /*while(size--) 
         {
            int elements; std::cin >> elements;
            arrj.emplace_back(elements)
         }*/
      }
   }
0 голосов
/ 06 июня 2018

Вы можете попробовать использовать вектор или массив, объявленный вне цикла, для хранения значения.с Vector вы можете push_back или с массивом вы можете динамическое выделение в куче

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...