Вместо использования статического c массива int arrayNumbers[n]
, который требует, чтобы вы знали, сколько чисел введет пользователь перед компиляцией, вам следует использовать массив c динамического типа, например std::vector<int>
, который может изменять размер во время время выполнения.
Например:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vecNumbers; // a dynamic array of integers
while(!cin.fail())
{
int value;
cout << "Enter a value: ";
cin >> value; // don't forget the semicolon
if(!cin.fail()) // not having this will add another 0 to the vector
vecNumbers.push_back(value);
}
// print the final vector (can ignore for your question)
vector<int>::const_iterator vecItr;
cout << "\nvecNumbers = [";
for(vecItr = vecNumbers.begin(); vecItr != vecNumbers.end(); vecItr++)
{
if(vecItr != vecNumbers.end()-1)
cout << *vecItr << ", ";
else
cout << *vecItr << "]";
}
return 0;
}
Вывод:
Enter a value: 5
Enter a value: 6
Enter a value: 7
Enter a value: 8
Enter a value: s
vecNumbers = [5, 6, 7, 8]
Обратите внимание, что !cin.fail()
определяет, когда тип ввода не совпадает, и, таким образом, завершает л oop. Таким образом, у вас может быть утверждение, в котором это упоминается, например, «когда закончите, введите любой символ в конце».
Также обратите внимание, что I #include <vector>
и using namespace std
, если вы этого не сделаете, вы можете просто использовать std::vector<int>
, std::cout
и std::cin
.