通过组合用户输入的前两个数组来制作第三个数组

Making 3rd array by combining the first two that are entered by user

本文关键字:数组 三个 两个 用户 组合 输入      更新时间:2023-10-16

那么,如果第一个数组和第二个数组的元素不按递减顺序排列,我怎样才能使第三个数组的元素不递减顺序呢?这是我的代码,但我不知道我到底错在哪里:

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 >= ni >= m ,这意味着您已将ab数组的所有值插入到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++;
}

请注意,这些循环中只有一个会实际执行。