// zadanie_9.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;
void fillArr(int* pArr, int sizeOfArr);
void showArr(int* pArr, int sizeOfArr);
void mixArrs(int* pArr, int sizeOfArr, int* pYArr);
int primeNums(int* pArr, int sizeOfArr);
bool isPrime(int n);
double avg(int* pArr, int sizeOfArr);
int main()
{
clock_t t;
t = clock();
setlocale(0, "rus");
cout << "Введите кол-во элементов массива: \n";
int sizeOfArr = 0;
cin >> sizeOfArr;
cout << "\tX(N):\n";
int* pArr = new int[sizeOfArr];
fillArr(pArr, sizeOfArr);
showArr(pArr, sizeOfArr);
cout << "Кол-во простых чисел:\n";
cout << primeNums(pArr, sizeOfArr) << endl;
cout << "Среднее арифметическое:\n";
cout << avg(pArr, sizeOfArr) << endl << endl;
cout << "\tY(k):\n";
int sizeOfYArr = sizeOfArr / 2;
int* pYArr = new int[sizeOfYArr];
mixArrs(pArr, sizeOfArr, pYArr);
showArr(pYArr, sizeOfYArr);
cout << "Кол-во простых чисел:\n";
cout << primeNums(pYArr, sizeOfYArr) << endl;
cout << "Среднее арифметическое:\n";
cout << avg(pYArr, sizeOfYArr) << endl << endl;
delete[] pArr;
delete[] pYArr;
t = clock() - t;
cout << "--Затрачено " << ((float)t) / CLOCKS_PER_SEC << " секунд--\n";
return 0;
}
void fillArr(int* pArr, int sizeOfArr)
{
srand(time(0));
for (int i(0); i < sizeOfArr; i++)
{
pArr[i] = rand() % 30 + 1;
}
}
void showArr(int * pArr, int sizeOfArr)
{
for (int i(0); i < sizeOfArr; i++)
{
cout << pArr[i] << ' ';
}
cout << endl;
}
void mixArrs(int * pArr, int sizeOfArr, int * pYArr)
{
int j(0);
for (int i(1); i < sizeOfArr; i += 2)
{
pYArr[j] = pArr[i];
j++;
}
}
int primeNums(int * pArr, int sizeOfArr)
{
int count = 0;
for (int i(0); i < sizeOfArr; i++)
{
if (isPrime(pArr[i]))
count++;
}
return count;
}
bool isPrime(int n)
{
for (int i = 2; i < sqrt(n); i++)
{
if (n % i == 0)
{
return false; // число делится, сл. непростое
}
}
return n > 1;
}
double avg(int * pArr, int sizeOfArr)
{
int summ = 0;
for (int i(0); i < sizeOfArr; i++)
{
summ += pArr[i];
}
double avgN = double(summ) / double(sizeOfArr);
return avgN;
}
Comments