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


#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <clocale>

using namespace std;

/*
    предусловия: K - массив размера n
    постусловия: функция возвращает количество ненулевых элементов
*/
int getCount(int *K, int n)
{
    int count = 0;
    for (int i = 0; i < n; i++)
    {
        if (K[i] != 0)
            count++;
    }
    return count;
}

/*
    предусловия: K - массив размера n, X - массив размера m
    постусловия: функция копирует ненулевые элементы из K в X
*/
void makeX(int *K, int n, int *X)
{
    int idx = 0;
    for (int i = 0; i < n; i++)
    {
        if (K[i] != 0)
        {
            X[idx] = K[i];
            idx++;
        }
    }
}

int main()
{
    setlocale(LC_ALL, "Russian");
    srand(time(NULL));

    // ввод размера
    int n;
    cout << "Введите размер массива N: ";
    cin >> n;

    int *K = new int[n];

    // заполнение массива K
    for (int i = 0; i < n; i++)
    {
        K[i] = rand() % 21 - 10;
    }

    // вывод массива K
    cout << "Массив K:" << endl;
    for (int i = 0; i < n; i++)
    {
        cout << K[i] << " ";
    }
    cout << endl;

    // вычисление размера для массива X
    int m = getCount(K, n);

    int *X = new int[m];

    // заполнение массива X
    makeX(K, n, X);

    // вывод массива X
    cout << "\nМассив X (ненулевые):" << endl;
    for (int i = 0; i < m; i++)
    {
        cout << X[i] << " ";
    }
    cout << endl;

    // очистка памяти
    delete[] K;
    delete[] X;

    system("pause");
    return 0;
}

#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <clocale>

using namespace std;

/*
    предусловия: K - массив размера n
    постусловия: функция возвращает количество ненулевых элементов
*/
int getCount(int *K, int n)
{
    int count = 0;
    for (int i = 0; i < n; i++)
    {
        if (K[i] != 0)
            count++;
    }
    return count;
}

/*
    предусловия: K - массив размера n, X - массив размера m
    постусловия: функция копирует ненулевые элементы из K в X
*/
void makeX(int *K, int n, int *X)
{
    int idx = 0;
    for (int i = 0; i < n; i++)
    {
        if (K[i] != 0)
        {
            X[idx] = K[i];
            idx++;
        }
    }
}

/*
    предусловия: X - массив размера m
    постусловия: функция возвращает число положительных после минимума
*/
int calc(int *X, int m)
{
    if (m <= 1)
        return 0;

    // поиск минимума
    int minId = 0;
    for (int i = 1; i < m; i++)
    {
        if (X[i] < X[minId])
            minId = i;
    }

    // подсчет положительных после него
    int count = 0;
    for (int i = minId + 1; i < m; i++)
    {
        if (X[i] > 0)
            count++;
    }

    return count;
}

int main()
{
    setlocale(LC_ALL, "Russian");
    srand(time(NULL));

    // ввод размера
    int n;
    cout << "Введите размер массива N: ";
    cin >> n;

    int *K = new int[n];

    // заполнение массива K
    for (int i = 0; i < n; i++)
    {
        K[i] = rand() % 21 - 10;
    }

    // вывод массива K
    cout << "Массив K:" << endl;
    for (int i = 0; i < n; i++)
    {
        cout << K[i] << " ";
    }
    cout << endl;

    // получение размера массива X
    int m = getCount(K, n);

    int *X = new int[m];

    // заполнение массива X
    makeX(K, n, X);

    // вывод массива X
    cout << "\nМассив X (ненулевые):" << endl;
    for (int i = 0; i < m; i++)
    {
        cout << X[i] << " ";
    }
    cout << endl;

    // вычисление результата
    int ans = calc(X, m);

    // вывод результата
    cout << "\nРезультат (положительных после мин.): " << ans << endl;

    // очистка памяти
    delete[] K;
    delete[] X;

    system("pause");
    return 0;
}