Просмотр поста

.
UJIN
ПОМОГИТЕ ПЛИЗ, гугл не помог
Кратко о главном(программе):
вводим количество элементов массива(программа генерирует элементы)
проводится сортировка по возрастанию, убираются нули и одинаковые элементы
на экран выводятся положительные и отрицательные числа
все построено на функциях

ВОТ КОД:
#include <iostream>
#include <cstdlib> //подключаем rand
using namespace std;

int sortirovka (int *a, const int n);//обработка массива
int positive   (int *positive_arr, const int count_p);//положительный числа
int negative   (int *negative_arr, const int count_n);//отрицательные числа
int generator (int *a, const int n);//ввод данных в массив(генератор)

int main()
{
    srand(time(0));
    setlocale(LC_ALL, "");
    int n;
    int *a = new int [n];
    cout << "Введите размер массива,\nn=";  cin >> n;
    generator (a, n);
    cout << "\n";
    cout << "***Начальный массив\n";
    for (int i=0;i<n;i++)
        cout << a[i] << " ";
    sortirovka (&a[0],n);//проводим обработку массива
    cout << "\n\n***Массив после обработки\n";
    for (int i=0;i<n;i++)
        cout << a[i] << " ";
    cout << "\n\n***РЕЗУЛЬТАТ\n";
    cout << "Положительные числа:\n";
    positive (&a[0],n);
    cout << "\n";
    cout << "Отрицательные числа:\n";
    negative (&a[0],n);
    cout << "\n\n";
    delete []a;
}

int generator (int *a, const int n)
{
    for (int i=0; i<n; i++)
    {
        /*
        cout << "a[" << i << "]=";
        cin >> a[i];
        */
        a[i]=rand()%21-9;
    }
}
int positive (int *a, const int n)
{
    int *positive_arr = new int;
    int count_p=0;
    for (int i=0; i<n; i++)
    {
        if (a[i]>0)
        {
            positive_arr[count_p]=a[i];
            count_p++;
        }
    }
    for (int i=0;i<count_p;i++)
        cout << positive_arr[i] << " ";
}
int negative (int *a, const int n)
{
    int *negative_arr = new int;
    int count_n=0;
    for (int i=0; i<n; i++)
    {
        if (a[i]<0)
        {
            negative_arr[count_n]=a[i];
            count_n++;
        }
    }
    for (int i=0;i<count_n;i++)
        cout << negative_arr[i] << " ";
}
int sortirovka( int *a, const int n)
{
    int temp;
    for (int z=0;z<n;z++)
        for (int i=0;i<n;i++)
        {
            if (a[i]>a[i+1])
            {
                temp=a[i];
                a[i]=a[i+1];
                a[i+1]=temp;
            }
        }
    for (int z=0;z<n;z++)
        for (int i=0;i<n;i++)
        {
            if (a[i]!=a[i+1])
                a[i]=a[i];
            else
                a[i]=a[i]*0;
        }
    return (*a);
}


Программа работает, но проблема в том, что она обрезает последний(самый большой положительный) элемент..
Проблема в функции сортировки, только вот что не так, я как-то не вьеду
Помогите, завтра сдавать уже