C++ Заполнить массив случайными числами в интервале [-100,100] и переставить элементы так, чтобы все положительные элементы стояли в начала массива, а все отрицательные и нули – в конце. Вычислите количество положительных элеме...

C++ Заполнить массив случайными числами в интервале [-100,100] и переставить элементы так, чтобы все положительные элементы стояли в начала массива, а все отрицательные и нули – в конце. Вычислите количество положительных элементов.
Гость
Ответ(ы) на вопрос:
Гость
Возможно, не самое эффективное решение #include #include #include int main() {     using namespace std;     const int N = 10;     int A[N];     srand(time(0));     for (int i = 0; i < N; ++i)         A[i] = rand() % 201 - 100;         //Вывод исходного массива на экран     for (int i = 0; i < N; ++i)         cout << A[i] << "  ";     cout << endl;     //Подсчитаем количества положительных и отрицательных     int kpos = 0, kneg = 0;     for (int i = 0; i < N; i++)         if (A[i] > 0)             ++kpos;         else             ++kneg;     int * Apos = new int[kpos];     int * Aneg = new int[kneg];     int pos = 0, neg = 0;     for (int i = 0; i < N; ++i)         if (A[i] > 0)             Apos[pos++] = A[i];         else             Aneg[neg++] = A[i];     for (int i = 0; i < N; ++i)         if (i < kpos)             A[i] = Apos[i];         else             A[i] = Aneg[i - kpos];     delete[] Apos;     delete[] Aneg;     //Вывод полученного массива на экран     for (int i = 0; i < N; ++i)         cout << A[i] << "  ";     cout << endl;     return 0; }
Не нашли ответ?
Ответить на вопрос
Похожие вопросы