通过组合用户输入的前两个数组来制作第三个数组
Making 3rd array by combining the first two that are entered by user
那么,如果第一个数组和第二个数组的元素不按递减顺序排列,我怎样才能使第三个数组的元素不递减顺序呢?这是我的代码,但我不知道我到底错在哪里:
int main() {
int a[10], b[10];
int m, n, i, j;
cout << " Vavedete maks. broi el. za masiv 1: "; cin >> m;
cout << " Vavedete maks. broi el. za masiv 2: "; cin >> n;
cout << endl;
for (i = 0; i < m; i++) {
cout << " Vavedete " << i << " element za masiv 1: "; cin >> a[i];
} cout << endl << endl;
for (j = 0; j < n; j++) {
cout << " Vavedete " << j << " element za masiv 2: "; cin >> b[j];
}
int c[20];
int k;
i = 0;
j = 0;
for (k = 0; k < (m + n); k++) {
if (a[i]>b[j]) {
c[k] = b[j];
j++;
}
else {
c[k] = a[i];
i++;
}
}
cout << " Noviyat masiv e: ";
for (k = 0; k < (m + n); k++) {
cout << c[k] << " ";
} cout << endl;
system("pause");
}
for (k = 0; k < (m + n); k++) {
if (a[i]>b[j]) {
c[k] = b[j];
j++;
}
else {
c[k] = a[i];
i++;
}
}
您可以通过比较当前值并将较小的值插入c
来合并数组。但最终你会到达一个点 j >= n
或i >= m
,这意味着您已将a
或b
数组的所有值插入到c
中。如果j >= n
则比较a[i] > b[j]
是不确定的,因为j
是越界的。
将循环条件更改为 i < m && j < n
。一旦任何一个数组完全插入 c
,您的循环就会退出。此时,您可以插入其他数组的其余部分:
for(; i < m; i++){
c[k] = a[i];
k++;
}
for (; j < n; j++){
c[k] = b[j];
k++;
}
请注意,这些循环中只有一个会实际执行。
相关文章:
- 使用嵌套函数数组是个好主意吗?
- 为什么我需要三个嵌套的大括号来调用赋值运算符,将const引用到二维数组
- 链表数组(5 个队列)
- 是否有可能通过溢出 C 中的第一个元素来写入数组第二个元素
- 数组中最大的三个数字
- 五个中三个最大参数的平均值,不使用排序算法或向量/数组
- 如何使用三个参数化构造函数的rand()函数初始化对象的数组
- 2D数组-将三个元素与if语句进行比较
- 如何按第一个,然后是第二个,然后是第三个对 2d 数组进行排序,..使用 C++ 的列
- 指向数组第一个元素的指针的地址
- 用 std::valarray 替换 POD C 样式数组是个坏主意吗?
- 将动态数组的三个元素复制到另一个元素中
- 对包含三个项目的数组进行排序
- OpenGL:两个顶点数组 + 两个索引数组
- c++多维数组多个数据类型
- C++ 如何根据分隔符序列将文件读入多维数组或三个单独的数组
- 是否可以将两个多维数组一起添加到第三个多维数组中
- 使用C++AMP处理大型数组(65536+个元素)
- 如何将字符串的三个字符放入数组的一个空间中
- 在c++中使用MKL函数初始化数组是个好主意吗?