Образовать третий вектор из общих элементов двух разных векторов
С формированием массивов все окей, но с построением третьего массива из общих элементов — никак.
int* SUM(int* arr, int size,int ARR1, int ARR2)
{
int a = 0, b = 0, i = 0, j, k;
{
for (i = 0; i < a; i++)
for (j = 0; j < a; j++)
if (ARR1[i] == ARR2[j])
{
for (k = 0; k < b; k++)
if (SUM[k] == ARR1[i]) break;
if (k == b) { SUM[b] = ARR1[i]; b++; }
}
if (b < 1) cout << "\nТретiй вектор не сформовано";
else {
cout << "\nКоординати третього вектора мають вид\nC(";
for (int i = 0; i < b; i++)
cout << SUM[i] << ";";
return (0);
}
}
}
Ответы (1 шт):
Автор решения: ТарасПрогер
→ Ссылка
Нате Вам, не мучтесь:
#include <iostream>
#include <ctime>
using namespace std;
int* SUM(int* arr, int* ARR1, int size2, int* ARR2, int size3, int& new_size)
{
int new_size1 = (size2 > size3) ? size2 : size3;
arr = new int[new_size1];
int cnt = 0;
for (int i = 0; i < new_size1; i++)
{
for (int j = 0; j < new_size1; j++)
{
if (ARR1[i] == ARR2[j])
{
arr[new_size] = ARR1[i];
++new_size;
}
}
}
return arr;
}
int main()
{
int new_size = 0;
int arr1[] = { 1,2,3,0 }; // массив для объеденения общих данных
int arr2[] = { 3,2,1,8,0}; // массив для объеденения общих данных
int* dest = nullptr; // сюда будем результат класть
dest = SUM(dest, arr1, 4, arr2, 5, new_size);
for (size_t i = 0; i < new_size; i++)
{
cout << dest[i] << endl;
}
system("pause");
}
Для автора:
Вот реализовал то, что Вам надо:
#include <iostream>
#include <ctime>
using namespace std;
int* SUM(int* arr, int* ARR1, int size2, int* ARR2, int size3, int& new_size)
{
int new_size1 = (size2 > size3) ? size2 : size3;
arr = new int[new_size1];
int cnt = 0;
for (int i = 0; i < new_size1; i++)
{
for (int j = 0; j < new_size1; j++)
{
if (ARR1[i] == ARR2[j])
{
arr[new_size] = ARR1[i];
++new_size;
}
}
}
return arr;
}
int* input_array(int* arr, int& size)
{
cout << "Quantity of elements - ";
int quant;
cin >> quant;
arr = new int[size=quant];
for (int i = 0; i < quant; i++)
{
cout << "#" << i + 1 << " = ";
cin >> arr[i];
}
return arr;
}
int* random_array(int* arr, int& size)
{
cout << "Quantity of elements - ";
int quant;
cin >> quant;
arr = new int[size=quant];
for (int i = 0; i < quant; ++i) {
arr[i] = rand() % 10;
cout << "#" << i << " = " << arr[i] << endl;
}
return arr;
}
int main()
{
int new_size = 0, size1, size2;
int* arr1 = nullptr;
arr1 = input_array(arr1, size1); // массив для объеденения общих данных
int* arr2 = nullptr;
arr2= random_array(arr2, size2); // массив для объеденения общих данных
int* dest = nullptr; // сюда будем результат класть
dest = SUM(dest, arr1, size1, arr2, size2, new_size);
cout << "---------------------" << endl;
cout << "General elements : ";
for (size_t i = 0; i < new_size; i++)
{
cout << dest[i] << " ";
}
system("pause");
}