【发布时间】:2016-04-14 15:03:45
【问题描述】:
程序的想法是在数组中输入元素。然后给整数“x”一个值。如果 'x' 为 3 并且数组 a[] 包含元素 {1,2,3,4,5,6},我们必须将 a[] “拆分”为另外两个数组。让我们说b []和c []。 在 b[] 中我们必须输入所有小于或等于 3 的值,在 c[] 中输入所有大于 3 的值。
我的问题是 - 我如何表达 b[i] 中的 3 个元素?
#include <iostream>
using namespace std;
int main()
{
int a[6];
int b[6];
int c[6];
int d;
for (int i = 0; i < 6; i++) {
cin >> a[i];
}
cin >> d;
for (int i = 0; i < 6; i++) {
if (d >= a[i]) {
b[i] = a[i]; // if d is 3, then i have 3 elements. How can i express them?
}
}
for (int i = 0; i < 6; i++) {
if (d< a[i]) {
c[i] = a[i];
}
}
for (int i = 0; i < 3; i++) {
cout << b[i];
}
cout << endl;
for (int i = 3; i < 6; i++) {
cout << c[i];
}
return 0;
}
【问题讨论】:
-
你的意思是你想要像
std::vector这样的东西? -
我们还没有研究过向量。我知道 c[i] = 4,5,6 和 b[i]=1,2,3 ,如果 d =3。它们都包含 3 个元素,但我不知道如何表达。
-
如果您在学习向量之前学习 c 数组,那么您就不是在学习 c++。请不要相信你的老师,请阅读向量。
-
我不清楚其他人在喋喋不休。据我所知,在填充上下数组时,您似乎需要使用一对额外的计数器,这些计数器的大小已经方便地调整为最大 潜在 使用量。当您为给定数组选择元素时,将其从
a[]复制过来,然后碰撞目标数组的计数器。 -
@specbk,我建议考虑如何压缩代码以避免在开始时必须对数组进行两次迭代以填充
b[]和c[]。你们已经了解了if语句,所以我相信你们也了解了可以与之配套的else块。如果没有别的,这对你来说可能是一个很好的练习。