Создание 3-го массива путем объединения первых двух, введенных пользователем

0

Итак, если 1-й и 2-й массивы имеют элементы, которые не уменьшают порядок, как я могу сделать третий в том же не убывающем порядке? Вот мой код, но я не знаю, где именно я ошибаюсь:

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");
}
  • 0
    в C ++ используйте std::vector . И std::sort() .
  • 1
    Я действительно новичок в C ++, поэтому я еще не в STD :(
Показать ещё 5 комментариев
Теги:
arrays

1 ответ

0
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++;
}

Обратите внимание, что только одна из этих циклов будет выполняться.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню