C++
Задание 1. Написать функцию, получающую указатель на динамический массив и его размер. Функция должна удалить все простые числа из массива и повернуть указатель на новый динамический массив.
Задание 2. Написать функцию, получающую указатель на статический массив и его размер. Функция распределяет положительные, отрицательные и нулевые элементы в отдельных динамических массивах.
Ответы
Відповідь:
Задание 1:
#include <iostream>
#include <cmath>
using namespace std;
bool isPrime(int num) {
if (num <= 1) return false;
for (int i = 2; i <= sqrt(num); i++) {
if (num % i == 0) return false;
}
return true;
}
int* removePrimes(int* arr, int size) {
int newSize = 0;
for (int i = 0; i < size; i++) {
if (!isPrime(arr[i])) newSize++;
}
int* newArr = new int[newSize];
int j = 0;
for (int i = 0; i < size; i++) {
if (!isPrime(arr[i])) {
newArr[j] = arr[i];
j++;
}
}
delete[] arr;
return newArr;
}
int main() {
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int size = sizeof(arr) / sizeof(arr[0]);
int* newArr = removePrimes(arr, size);
for (int i = 0; i < size - 2; i++) {
cout << newArr[i] << " ";
}
cout << endl;
delete[] newArr;
return 0;
}
Задание 2:
#include <iostream>
using namespace std;
void sortElements(int* arr, int size) {
int* posArr = new int[size];
int* negArr = new int[size];
int* zeroArr = new int[size];
int posIndex = 0;
int negIndex = 0;
int zeroIndex = 0;
for (int i = 0; i < size; i++) {
if (arr[i] > 0) {
posArr[posIndex] = arr[i];
posIndex++;
}
else if (arr[i] < 0) {
negArr[negIndex] = arr[i];
negIndex++;
}
else {
zeroArr[zeroIndex] = arr[i];
zeroIndex++;
}
}
cout << "Positive elements: ";
for (int i = 0; i < posIndex; i++) {
cout << posArr[i] << " ";
}
cout << endl;
cout << "Negative elements: ";
for (int i = 0; i < negIndex; i++) {
cout << negArr[i] << " ";
}
cout << endl;
cout << "Zero elements: ";
for (int i = 0; i < zeroIndex; i++) {
cout << zeroArr[i] << " ";
}
cout << endl;
delete[] posArr;
delete[] negArr;
delete[] zeroArr;
}
int main() {
int arr[] = { 1, -2, 3, 0, 5, -6, 7, -8, 9 };
int size = sizeof(arr) / sizeof(arr[0]);
sortElements(arr, size);
return 0;
}