C++
Задание 1. Написать функцию, получающую указатель на динамический массив и его размер. Функция должна удалить все простые числа из массива и повернуть указатель на новый динамический массив.
Задание 2. Написать функцию, получающую указатель на статический массив и его размер. Функция распределяет положительные, отрицательные и нулевые элементы в отдельных динамических массивах.

Ответы

Ответ дал: archie242
1

Відповідь:

Задание 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;

}

Вас заинтересует