С++
Завдання 1. Написати функцію, яка отримує покажчик
на масив і його розмір, і повертає суму і добуток його
елементів у двох параметрах-покажчиках.
Завдання 2. Написати функцію, яка отримує покажчик
на масив і його розмір, і повертає кількість від’ємних,
додатних і нульових елементів масиву.
Завдання 3. Написати функцію, яка приймає як аргумент покажчики на два масиви (А і В) і розміри масивів.
Функція перевіряє, чи є масив В підмножиною масиву А
і повертає покажчик на початок знайденого фрагмента
або повертає 0 в іншому випадку.
Завдання 4. Написати функцію, яка отримує покажчик
на динамічний масив і його розмір. Функція має видалити з масиву всі від’ємні числа та повернути покажчик
на новий динамічний масив.
Завдання 5. Створити функцію, яка дає змогу додавати
блок елементів у кінець масиву.
Завдання 6. Створити функцію, яка дає змогу вставляти
блок елементів, починаючи з довільного індексу масиву.
Завдання 7. Створити функцію, яка дає змогу видаляти
блок елементів, починаючи з довільного індексу масиву
Ответы
Відповідь:
Завдання 1:
void sumAndProduct(int* arr, int size, int* sum, int* product) {
*sum = 0;
*product = 1;
for (int i = 0; i < size; i++) {
*sum += *(arr + i);
*product *= *(arr + i);
}
}
Завдання 2:
void countPosNegZero(int* arr, int size, int* positive, int* negative, int* zero) {
*positive = 0;
*negative = 0;
*zero = 0;
for (int i = 0; i < size; i++) {
if (*(arr + i) > 0) {
(*positive)++;
} else if (*(arr + i) < 0) {
(*negative)++;
} else {
(*zero)++;
}
}
}
Завдання 3:
int* findSubset(int* A, int sizeA, int* B, int sizeB) {
for (int i = 0; i <= sizeA - sizeB; i++) {
bool isSubset = true;
for (int j = 0; j < sizeB; j++) {
if (*(A + i + j) != *(B + j)) {
isSubset = false;
break;
}
}
if (isSubset) {
return A + i;
}
}
return nullptr;
}
Завдання 4:
int* removeNegative(int* arr, int size) {
int count = 0;
for (int i = 0; i < size; i++) {
if (*(arr + i) >= 0) {
count++;
}
}
int* newArr = new int[count];
int index = 0;
for (int i = 0; i < size; i++) {
if (*(arr + i) >= 0) {
*(newArr + index) = *(arr + i);
index++;
}
}
return newArr;
}
Завдання 5:
void append(int*& arr, int& size, int* elements, int count) {
int newSize = size + count;
int* newArr = new int[newSize];
for (int i = 0; i < size; i++) {
*(newArr + i) = *(arr + i);
}
for (int i = 0; i < count; i++) {
*(newArr + size + i) = *(elements + i);
}
delete[] arr;
arr = newArr;
size = newSize;
}
Завдання 6:
void insert(int*& arr, int& size, int* elements, int count, int index) {
int newSize = size + count;
int* newArr = new int[newSize];
for (int i = 0; i < index; i++) {
*(newArr + i) = *(arr + i);
}
for (int i = 0; i < count; i++) {
*(newArr + index + i) = *(elements + i);
}
for (int i = index; i < size; i++) {
*(newArr + count + i) = *(arr + i);
}
delete[] arr;
arr = newArr;
size = newSize;
}
Завдання 7:
void remove(int*& arr, int& size, int index, int count) {
int newSize = size - count;
int* newArr = new int[newSize];
for (int i = 0; i < index; i++) {
*(newArr + i) = *(arr + i);
}
for (int i = index + count; i < size; i++) {
*(newArr + i - count) = *(arr + i);
}
delete[] arr;
arr = newArr;
size = newSize;
}