Загрузка данных
#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;
}