ОФ
Ольга Филиппова

Помогите написать сложение множеств в С++

Это нужно сделать с помощью массивов.
так вот, имеется два равных по длинне массива A и B рандомных возрастающих чисел от 0 до 100. нужно сгенерировать массив С равный сумме этих массивов, тобишь сложить эти два множества. при этом нужно учесть, что в массивах могут быть одинаковые элементы и в конечный массив такие элементы заносятся в единственном числе, что меняет его длину. В массиве С ненужно располагать элементы по возрастанию.
вот программный код, что у меня получился, но всё равно работает криво, если сталкивается с пересечением множеств больше 1 раза. уже часа 3 бьюсь. помогите
http://pastebin.com/1zfVthcB

Alexey N, это потому что мне нужны помимо того, что рандомные, так ещё и возрастающие числа.

про Z++
я незнаю длину массива С, пока не посчитаю число пересечений множеств. для этого нужно Z.

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

Елена
Елена

Почему у вас так странно задаются случайные числа:
a[ i ]=a[ i-1 ]+rand() ;
Это неправильно. Правильно a[ i ] = random(100);

Во внутреннем цикле непонятно, почему элементы заносятся в первый массив, а не в третий (С) .
z++; // Убрать
a[ i ]=-a[ i ]; // И вот это для меня вообще загадка - зачем менять знак? Если тут надо писать в элемент c[ z++ ].

Последний вложенный цикл меня вообще поразил. Я просто не понимаю, что там происходит.

Вы лучше прочитайте все элементы по очереди из первого (к примеру) массива, и во временном массиве в 100 элементов (ну максимум вашего рандома) установите флаг 1 для каждого числа. Потом тоже самое со вторым массивом. Итого, у вас массив (1,2,5,5) + (1,1,5,5) превратится в (1,1,0,0,1). Перебираете его элементы - и вуаля, получаете сумму множеств без повторений. А

УПД: Не прочитал, тогда да, все почти верно, за исключением того, что на 6 итерации у вас числа вполне вероятно начнут выходить за границу 100. Плюс у вас получается не "возрастающий", а "не убывающий" массив. А за счет того, что у вас массивы возрастающие - просто берете и заносите в последний элемент массива Це минимум из текущего места массива А или Б, продвигая указатель в нем (в масиве А или Б, конечно) на один вперед.

Похожие вопросы
С++ Написать подпрограмму, выполняющую сложение двух целочисленных матриц
помогите с задачей, на множества в Delphi
Как зделать сложеное меню??
помогите с задачой в паскале!( множества)(сет)
помогите составить программу в паскале по множествам
Является ли группой множество всех матриц размера nxn с операцией сложения?
как написать что если элементов нет в множестве.... в паскале. ..
Множества! помогите плз. срочно надо.
помогите пожалуйста с множеством на паскале
сложение c++