Посмотрите вниметельней на этот код:
for (int j=0, i = 0, z=0; i < size,j<size,z<size; i++,j++,z++)
{
if (massA[i] == massB[j]) {
massC[z] = massA[i];
cout << massC[z] << " ";
}
}
Думаю, вы не понимаете, как работает
for. Вы присваиваете трём переменным одинаковое значение и одновременно увеличиваете каждый на единицу. Всё равно, что вы написали бы следующее:
for (int i = 0; i < size; ++i)
{
if (massA[i] == massB[i]) {
massC[i] = massA[i];
cout << massC[i] << " ";
}
}
Согласитесь, это не имеет смысла. Чтобы сделать то, что вы задумали, нужно разместить один цикл внутри другого:
int k = 0;
for (int j = 0; i < size; ++i)
{
for (int j = 0; j < size; ++i)
{
if (A[i] == B[j])
{
// Здесь можно сделать так:
C[k] = A[i];
++k;
// или одной строчкой
// C[k++] = A[i]
}
}
}
Но заметьте, что у такого алгоритма будет один недостаток: если в одном массиве два одинаковых элемента, и в другом два таких же, в новом массиве их будет четыре. В более общем случае, если в одном массиве
a одинаковых элементов, а в другом
b таких же, в результате вы получите
a*b таких элементов, что также может вызвать переполнение вашего массива.
Вообще странно, что ваш пример скомпилировался. Должно быть, вы используете устаревший компилятор. В C++ функция
main должна возвращать
int. Использование
void приводит к ошибке:
main.cpp:1:11: error: ‘::main’ must return ‘int’
Так же обратите внимание, что если используете в C++ заголовочные файлы языка C, их принято называть с префиксом
c и без расширения
.h#include <ctime>
А вообще, в C++ есть
random.
Также никогда не используйте
system("pause");
функция
system, приостанавливает вашу программу, и запускает указанную в аргументе. Люди которые не используют Windows, не смогут запустить ваш код, потому что у них нет программы
pause.