Написать функцию, определяющую количество положительных, отрицательных и нулевых элементов массива, заполненных случайными числами (-20, 20)
Размерность указывает пользователь(на языке С++)(Функции)
Ответы
#include <iostream>
#include <math.h>
#include <cstdlib>
#include <time.h>
#include "тест.h"
using namespace std;
double* CreateArray(int MIN, int MAX, int n) {
srand(time(NULL));
double *a = new double[n];
for (int i = 0; i < n; i++) {
a[i] = MIN + rand() % (MAX-MIN+1);
}
return a;
}
enum Filter {
positive = 0,
negative,
zero
};
void PrintArray(double* a, int n) {
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl;
}
int FindElementsByFilter(double* a, int n, Filter searchFilter) {
int k = 0;
switch (searchFilter)
{
case positive:
for (int i = 0; i < n; i++) {
if (a[i] > 0) k++;
}
break;
case negative:
for (int i = 0; i < n; i++) {
if (a[i] < 0) k++;
}
break;
case zero:
for (int i = 0; i < n; i++) {
if (a[i] == 0) k++;
}
break;
default:
break;
}
return k;
}
int main()
{
setlocale(LC_ALL, "rus");
int n;
cin >> n;
double* a = CreateArray(-20, 20, n);
PrintArray(a, n);
printData(a, n);
system("pause");
return 0;
}
void printData(double* a, int n)
{
cout << "Положительных: " << FindElementsByFilter(a, n, positive) << " " << "Отрицательных: " << FindElementsByFilter(a, n, negative) << " " << "Нулей: " << FindElementsByFilter(a, n, zero) << endl;
}