Привет! В этой статье я хотел бы поделиться с вами своим опытом написания функции, которая распределяет элементы статического массива по положительным, отрицательным и нулевым значениям в отдельные динамические массивы.Для начала, давайте рассмотрим, как будет выглядеть функция и какие шаги нужно выполнить для ее реализации.cpp
#include
using namespace std;
void arraySort(int* staticArray, int arraySize, int*n positiveArray, int*n negativeArray, int*n zeroArray);
int main
{
int staticArray[5] { 1, -2, 0, 3, -4 };
int* positiveArray nullptr;
int* negativeArray nullptr;
int* zeroArray nullptr;
arraySort(staticArray, 5, positiveArray, negativeArray, zeroArray);
cout << ″Positive elements⁚ ″;
for (int i 0; i < 2; i )
{
cout << positiveArray[i] << ″ ″;
}
cout << endl;
cout << ″Negative elements⁚ ″;
for (int i 0; i < 2; i )
{
cout << negativeArray[i] << ″ ″;
}
cout << endl;
cout << ″Zero elements⁚ ″;
for (int i 0; i < 1; i )
{
cout << zeroArray[i] << ″ ″;
}
cout << endl;
delete[] positiveArray;
delete[] negativeArray;
delete[] zeroArray;
return 0;
}
void arraySort(int* staticArray, int arraySize, int*n positiveArray, int*n negativeArray, int*n zeroArray)
{
int positiveCount 0;
int negativeCount 0;
int zeroCount 0;
for (int i 0; i < arraySize; i )
{
if (staticArray[i] > 0)
{
positiveCount ;
}
else if (staticArray[i] < 0)
{
negativeCount ;
}
else
{
zeroCount ;
}
}
positiveArray new int[positiveCount];
negativeArray new int[negativeCount];
zeroArray new int[zeroCount];
int positiveIndex 0;
int negativeIndex 0;
int zeroIndex 0;
for (int i 0; i < arraySize; i )
{
if (staticArray[i] > 0)
{
positiveArray[positiveIndex] staticArray[i];
positiveIndex ;
}
else if (staticArray[i] < 0)
{
negativeArray[negativeIndex] staticArray[i];
negativeIndex ;
}
else
{
zeroArray[zeroIndex] staticArray[i];
zeroIndex ;
}
}
}
Давайте разберемся с этим кодом. В функции `arraySort` мы сначала вычисляем количество положительных, отрицательных и нулевых элементов в статическом массиве. Затем мы создаем динамические массивы `positiveArray`, `negativeArray` и `zeroArray` с соответствующими размерами. После этого мы проходим по статическому массиву и заполняем динамические массивы значениями, в зависимости от их типа. Если элемент положительный, мы добавляем его в `positiveArray`, если отрицательный ⏤ в `negativeArray`, а если равен нулю ⸺ в `zeroArray`. В `main` функции мы создаем статический массив `staticArray` и указатели на динамические массивы с помощью `int* positiveArray nullptr`, `int* negativeArray nullptr` и `int* zeroArray nullptr`. Затем, мы вызываем функцию `arraySort`, передавая ей статический массив, его размер и указатели на динамические массивы. После сортировки массива, мы выводим результаты в консоль, указывая элементы положительного массива, отрицательного массива и массива с нулевыми элементами.