Загрузка данных


#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 << "Vvedite razmer pervogo massiva: ";
    cin >> n1;
    cout << "Vvedite razmer vtorogo massiva: ";
    cin >> n2;

    int *a1 = new int[n1];
    int *a2 = new int[n1 + n2];

    form(a1, n1);
    form(a2, n2);

    cout << "\nMassiv 1: ";
    print(a1, n1);
    cout << "Massiv 2: ";
    print(a2, n2);

    print(a1, n1, "array1.txt");
    print(a2, n2, "array2.txt");

    int size2 = n2;
    process(a1, n1, a2, size2);
    cout << "\n[Zadanie 14] Massiv 2 posle dobavleniya novyh elementov:\n";
    print(a2, size2);

    int *negArr = new int[n1];
    int negSize = process(a1, n1, negArr);
    cout << "\n[Zadanie 9] Otricatelnye elementy massiva 1:\n";
    print(negArr, negSize);

    int size1 = n1;
    process(a1, size1);
    cout << "\n[Zadanie 12] Massiv 1 posle udaleniya elementov:\n";
    print(a1, size1);

    delete[] a1;
    delete[] a2;
    delete[] negArr;

    return 0;
}