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


#pragma once

class Array {
	double* arr;
	int size;
public:
	Array();
	Array(int size);
	~Array();


	void fillArray();
	void printArray() const;
	int countPositive() const;
	Array buildNewArray() const;
	int getSize() const;
};

#include "Array.h"
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

Array::Array() : arr(nullptr), size(0) {}

Array::Array(int size) {
	this->size = size;
	arr = new double[size];
}

Array::~Array() {
	if (arr != nullptr) {
		delete[] arr;
	}
}

void Array::fillArray() {
	for (int i = 0; i < size; ++i) {
		arr[i] = (rand() % 10001 - 5000) / 100.0;
	}
}

void Array::printArray() const {
	for (int i = 0; i < size; ++i) {
		cout << " " << arr[i] << " ";
	}
	cout << endl;
}

int Array::countPositive() const {
	int count = 0;
	for (int i = 0; i < size; ++i) {
		if (arr[i] > 0) {
			count++;
		}
	}
	return count;
}

Array Array::buildNewArray() const {
	int positiveCount = countPositive();
	int newSize = 0;
	for (int i = 0; i < size; ++i) {
		if (arr[i] > positiveCount) {
			newSize++;
		}
	}
	Array newArray(newSize);
	int index = 0;
	for (int i = 0; i < size; ++i) {
		if (arr[i] > positiveCount) {
			newArray.arr[index++] = arr[i];
		}
	}
	return newArray;
}

int Array::getSize() const {
	return size;
}

#include <iostream>
#include "Array.h"
using namespace std;

int main() {
	setlocale(LC_ALL, "Russian");

	int n;
	cout << "Введите размер массива: ";
	cin >> n;
	
	Array originalArray(n);
	originalArray.fillArray();
	
	cout << "Исходный массив:" << endl;
	originalArray.printArray();

	int positiveCount = originalArray.countPositive();
	cout << "Количество положительных элементов: " << positiveCount << endl;

	Array newArray = originalArray.buildNewArray();

	cout << "Новый массив:" << endl;
	newArray.printArray();

	cout << "Размер нового массива: " << newArray.getSize() << endl;

	return 0;
}