C++ 使用用户输入c++;
我希望有一个迷你函数,允许用户键入一组数字,并将每个数字动态分配到一个数组中。例如:C++ 使用用户输入c++;,c++,arrays,C++,Arrays,我希望有一个迷你函数,允许用户键入一组数字,并将每个数字动态分配到一个数组中。例如: int main() { int* x = NULL; int n, numbers; std::cin >> n; x = new int[n] for (int i=0;i<n;i++){ std::cin >> numbers; x[i] = numbers; } delete [] x; 用
int main()
{
int* x = NULL;
int n, numbers;
std::cin >> n;
x = new int[n]
for (int i=0;i<n;i++){
std::cin >> numbers;
x[i] = numbers;
}
delete [] x;
用户可以在此之后键入3个数字
3 1 2 3
我试图将值1、2、3存储到一个数组中,使其看起来像
[1, 2, 3]
但现在它存储为
[123]
反正我能解决这个问题?我是新的C++编程,所以我觉得有一个简单的解决办法,但我不知道如何…谢谢大家! 可以将数组的每个元素直接存储到x[i]中。不确定使用什么数字(我已经从x[I]分配了数字) x是要删除的数组。还有一个缺失的
代码>在x=newint[x]
-这是打字错误吗
int main()
{
int* x = NULL;
int n, numbers;
std::cin >> n;
x = new int[n];
for (int i=0;i<n;i++){
std::cin >> x[i];
numbers = x[i];
}
delete [] x;
intmain()
{
int*x=NULL;
int n,数字;
标准:cin>>n;
x=新整数[n];
对于(int i=0;i>x[i];
数字=x[i];
}
删除[]x;
您可以使用向量来代替:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n;
cin >> n;
vector<int> v;
for (int i = 0; i < n; ++i)
{
int val;
cin >> val;
v.push_back(val);
}
}
为什么不动态创建数组?这样,用户就不必预先键入元素的数量:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec;
int x;
while (cin >> x)
vec.push_back(x);
for (int y: vec)
cout << y << ' ';
cout << '\n';
}
#包括
#包括
使用名称空间std;
int main()
{
向量向量机;
int x;
而(cin>>x)
向量推回(x);
对于(整数y:vec)
cout
或者,在
intmain()
{
std::vector myvector{std::istream_迭代器(std::cin),std::istream_迭代器();
std::copy(myvector.begin()、myvector.end()、std::ostream_迭代器(std::cout,“\n”);
返回0;
}
使用cin时,您需要为每个条目按enter键。例如:1、2、,etc@Pedrom这是不正确的。它将其存储为[123]而不是[1,2,3]是什么意思?@ZacHowland不,这是正确的,您需要包含一个空白分隔符才能分隔项目。Enter键对我来说很有效,但空格就可以了too@Pedrom'您需要包含一个空白分隔符才能分隔这些项。'啊哈!这是要求的吗?“C++的向量负责为您分配内存。”正确,这就是为什么不需要询问向量的大小(n
)。@JorenHeit这不是关于向量大小,而是关于用户想要输入的数字量。@FrançoisMoisan你为什么想知道?这就是CTRL+D
(EOF)的内容是为了,对吗?@JorenHeit当然,但不清楚这是否是OP任务的要求(明确要求计数)或者他只是为了分配数组。@FrançoisMoisan当他显式分配数组时,我认为这是他的目的。无论如何,即使他以后需要计数,也可以很容易地从std::vector
的size()
member。无需麻烦用户。在第一个for循环中,我们可以有以下代码,“for(int i=0;i>x[i];}”
cout << "[";
for (int i = 0; i < v.size(); ++i)
{
if (i != 0)
cout << ",";
cout << v[i];
}
cout << "]";
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec;
int x;
while (cin >> x)
vec.push_back(x);
for (int y: vec)
cout << y << ' ';
cout << '\n';
}
int main()
{
int* x = NULL;
int n, numbers;
std::cin >> n;
x = new int[n]; // need a semi-colon here
for (int i=0;i<n;i++)
{
std::cin >> numbers;
x[i] = numbers;
}
for (int j = 0; j < n; ++j)
{
std::cout << "x[" << j << "] = " << x[j] << std::endl;
}
delete [] x; // you mean x, not a
return 0;
}
int main()
{
std::vector<int> myvector;
std::copy(std::istream_iterator<int>(std::cin), std::istream_iterator<int>(), std::back_inserter(myvector));
std::copy(myvector.begin(), myvector.end(), std::ostream_iterator<int>(std::cout, "\n"));
return 0;
}
int main()
{
std::vector<int> myvector{std::istream_iterator<int>(std::cin), std::istream_iterator<int>()};
std::copy(myvector.begin(), myvector.end(), std::ostream_iterator<int>(std::cout, "\n"));
return 0;
}