Quipex icon

zadanie_9

Quipex | PRO | 02/29/16 06:00:01 PM UTC | 0 ⭐ | 338 👁️ | Never ⏰ | []
C++ |

2.42 KB

|

None

|

0 👍

/

0 👎

// 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