Задача на массивы

Язык Си
02.02.2017

(Всего голосов: 0)

Допустим, мы ввели с клавиатуры два числовых массива: 1, 2, 4, 6 и 2, 7, 4, 10, 9. Из этих двух массивов нужно переписать в новый массив числа, которые не повторяются. Т.е. новый массив: 1, 6, 7, 10, 9. В этом смысл задачи. Теперь обсудим ход решения задачи: для начала зададим оба массива, затем поочередно сравним каждое число первого массива с каждым числом второго. Если числа массивов несовпадают, то переписываем их в новый массив. То же самое сделаем со вторым массивом, и задача решена.

#include <cstdlib>
#include <stdio.h>  
 
int main(int argc, char** argv) {
    int a[100], b[100];              
    int mas[200];
    int n, m, i, j;
    printf("Input n, m:\n");
    scanf("%d%d", &n, &m);           //задаем количества элементов массивов n и m
    printf("Input a:\n");
    for (i = 0; i < n; i++) {
        scanf("%d", &a[i]);          //задаем массив a[]
    }
    printf("Input b:\n");
    for (i = 0; i < m; i++) {
        scanf("%d", &b[i]);          //задаем массив b[]
    }
    int t = -1;                      //задаем t - номер элемента нового массива
    for (j = 0; j < n; j++) {
        int k = 0;                   //задаем k = 0
        for (i = 0; i < m; i++) {     
            if (a[j] == b[i]) {      //циклично сравниваем j-тый элемент массива a[] c каждым элементом массива b[]
                k++;                 //если числа равны, то k уже не равно нулю.
            }
        }
        if (k == 0) {                //но если числа не равны, то k по-прежнему равно нулю и выполняется следующее условие
            t++;                     //номер t массива mas увеличивается на единицу
            mas[t] = a[j];           //заполняем массив mas
        }                            //затем цикл повторяется и идет сравнение уже второго элемента первого массива с каждым элементом второго массива
    }
                                     //проделываем ту же операцию для второго массива                          
    for (j = 0; j < n; j++) {
        int k = 0;
        for (i = 0; i < m; i++) {
            if (b[j] == a[i]) {
                k++;
            }
        }
        if (k == 0) {
            t++;
            mas[t] = b[j];
        }
    }

    printf("mas:\n");
    for (i = 0; i <= t; i++) {
        printf("%d ", mas[i]);        //вывод на экран массива mas
    }
    return 0;
}

Результат на экране:

Input n, m:
5
6
Input a:
1 2 6 10 9
Input b:
11 1 6 20 7 9
mas:
2 10 11 20 7 Для закрытия терминала нажмите клавишу [ВВОД]...


Оставить комментарий