#include <iostream>
#include <fstream>
using namespace std;
void form(int *arr, int size)
{
for (int i = 0; i < size; i++)
arr[i] = rand() % 41 - 20;
}
void print(int *arr, int size)
{
for (int i = 0; i < size; i++)
cout << arr[i] << " ";
cout << endl;
}
void print(int *arr, int size, const char *filename)
{
ofstream fout(filename);
for (int i = 0; i < size; i++)
fout << arr[i] << " ";
fout << endl;
fout.close();
}
void process(int *arr1, int size1, int *arr2, int &size2)
{
for (int i = 0; i < size1; i++)
{
bool found = false;
for (int j = 0; j < size2; j++)
{
if (arr1[i] == arr2[j])
{
found = true;
break;
}
}
if (!found)
{
arr2[size2] = arr1[i];
size2++;
}
}
}
int process(int *arr, int size, int *negArr)
{
int negSize = 0;
for (int i = 0; i < size; i++)
{
if (arr[i] < 0)
{
negArr[negSize] = arr[i];
negSize++;
}
}
return negSize;
}
void process(int *arr, int &size)
{
int maxV = arr[0], minV = arr[0];
for (int i = 1; i < size; i++)
{
if (arr[i] > maxV) maxV = arr[i];
if (arr[i] < minV) minV = arr[i];
}
double border = (maxV + minV) / 2.0;
int newSize = 0;
for (int i = 0; i < size; i++)
{
if (arr[i] <= border)
arr[newSize++] = arr[i];
}
size = newSize;
}
int main()
{
int n1, n2;
cout << "Введите размер первого массива: ";
cin >> n1;
cout << "Введите размер второго массива: ";
cin >> n2;
int *a1 = new int[n1];
int *a2 = new int[n1 + n2];
form(a1, n1);
form(a2, n2);
cout << "\nМассив 1: ";
print(a1, n1);
cout << "Массив 2: ";
print(a2, n2);
print(a1, n1, "array1.txt");
print(a2, n2, "array2.txt");
int size2 = n2;
process(a1, n1, a2, size2);
cout << "\n[Задание 14] Массив 2 после добавления новых элементов:\n";
print(a2, size2);
int *negArr = new int[n1];
int negSize = process(a1, n1, negArr);
cout << "\n[Задание 9] Отрицательные элементы массива 1:\n";
print(negArr, negSize);
int size1 = n1;
process(a1, size1);
cout << "\n[Задание 12] Массив 1 после удаления элементов:\n";
print(a1, size1);
delete[] a1;
delete[] a2;
delete[] negArr;
return 0;
}