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

Ответы 1

  • Возможно, не самое эффективное решение#include <iostream>#include <cstdlib>#include <ctime>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;}
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years