0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 9
1

Сравнить два массива, из большего вытащить не повторяющиеся элементы в новый

09.12.2012, 15:39. Показов 1801. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть задача
Даны два целочисленных массива. Если размер первого массива больше размера второго, то создать новый массив, который будет их разностью, то есть в него включить те элементы, которые входят в первый, но не входят во второй. И наоборот. Если исходные массивы оказались одного размера, новый массив не создавать.

Ниже представил куски кода с комментами небольшими, помогите разобраться, пожалуйста.

Кусок из main
Кликните здесь для просмотра всего текста
C
1
2
3
4
const int N=10;
int mas1[N], mas2[N], Newmas[N], nm=0, n1=0, n2=0;
// mas1 - первый массив, mas2 - второй массив, n1 количество ячеек первого, 
//n2 - второго. Все вводим с клавиатуры.


У меня идут 3 функции матрешкой. И вот в третьей какая-то ошибка. Хоть ограничение массива 10, а j в третьей функции считает и до 13, и до 14, и до 15.

Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
using namespace std;
int sozd(int *mas1, int *mas2, int n1, int n2, int *Newmas);
int proverka(int *mas1, int *mas2, int n, int i);
 
// определяет, какой массив больше, из какого вытаскивать значения
int progon(int *mas1, int *mas2, int n1, int n2, int *Newmas)
{
    int d = 0;
    if (n1>n2)
    {
        d = sozd(mas1, mas2, n1, n2, Newmas);
        return d;
    }
    if (n2>n1)
    {
        d = sozd(mas2, mas1, n2, n1, Newmas);
        return d;
    }
    if (n1==n2)
        return d;
}
 
//отправляет число из большего массива в новый, 
//если прошло нижеследующую проверку
int sozd(int *mas1, int *mas2, int n1, int n2, int *Newmas)
{
    int i=0, an=0, k=0;
        while(i<n1)
        {
            an = proverka(mas1, mas2, n2, i);
            cout<<"an="<<an;
            if(an)
            {
                Newmas[k]=mas1[i];
                k++;
            }
            i++;
        }
        cout<<"k="<<k<<endl;
        return k;
}
 
//Проверяет, есть ли число из большего массива в меньшем.
int proverka(int *mas1, int *mas2, int n, int i)
{
    int j=0;
    while(mas1[i]!=mas2[j]){
        j++;
        cout<<"j="<<j<<"\t";
    }
    if (j==(n-1))
        return 1;
        return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.12.2012, 15:39
Ответы с готовыми решениями:

Найти в массиве повторяющиеся элементы и записать только уникальные элементы в новый массив из первого массива
Всем привет. Можете помочь написать такой алгоритм, нужно в одном массиве найти повторяющиеся...

Сравнить два числа, поменять их местами и из большего вычесть меньшее
Помогите пожалуйста как сравнить два числа, поменять их местами и из большего вычесть меньшее вот...

Заданы два динамических массива. Сформировать новый массив, содержащий элементы, не входящие в оба массива
Не могу сделать Заданы два динамических массива. Сформировать новый массив, содержащий элементы,...

Заданы два массива целых чисел одинаковой размерности. Сравнить их соответствующие элементы и вывести
Заданы два массива целых чисел одинаковой размерности. Сравнить их соответствующие элементы и...

1
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 9
11.12.2012, 10:16  [ТС] 2
Спасибо, сам решил проблему.
Тему можно закрывать.
0
11.12.2012, 10:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.12.2012, 10:16
Помогаю со студенческими работами здесь

Даны два одномерных массива. Сравнить совпадающие элементы и сформировать массив из максимальных элементов
даны два одномерных массива,сравнить совпадающие элементы и сформировать массив с максимальных...

Сравнить два столбца (не по порядку) и разные строчки вытащить
Есть два столбца с товаром (около 4000 позиций в каждом), они отличаются, и много где. Т.е. я не...

Дано два целочисленных массива Сформировать новый массив, который содержит элементы первого массива, которых нет во втором
Полное условие: Дано два целочисленных массива, состоящих из неповторяющихся чисел. Сформировать...

Сравнить поэлементно два одномерных массива, и через if определить, равны эти элементы или нет
Люди помогите пожалуйста Нужно сравнить по элементам два одномерных массива и через if определить...

Заданы два массива. Сравнить соответствующие элементы массивов и вывести на экран массив, состоящий из совпавших элементов.
Помогите пожалуйста решить пару задач :3 Заданы два массива целых чисел одинаковой размерности....

Массив: Сравнить два массива и добавить в массив two недостающие элементы
В примере 1, есть два таких массива: //Первый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru