Відаю всі бали мова с++
Завдання 1. Написати функцію, яка отримує покажчик на масив і його розмiр, і повертає суму і добуток його i елементів у двох параметрах-покажчиках.
Завдання 2.Написати функцію, яка отримує покажчик на масив і його розмір, і повертає кількість від’ємних, додатних і нульових елементів масиву.
Завдання 3. Написати функцію, яка приймає як аргу- мент покажчики на два масиви (А і В) і розміри масивів. Функція перевіряє, чи є масив В підмножиною масиву А і повертає покажчик на початок знайденого фрагмента або повертає 0 в іншому випадку.
Завдання 4. Написати функцію, яка отримує покажчик на динамічний масив і його розмір. Функція має вида- лити з масиву всі від'ємні числа та повернути покажчик на новий динамічний масив.
Завдання 5. Створити функцію, яка дає змогу додавати блок елементів у кінець масиву.
Answers & Comments
Відповідь:
Пояснення:
1. void sumAndProduct(int* arr, int size, int* sumPtr, int* productPtr) {
int sum = 0;
int product = 1;
for (int i = 0; i < size; i++) {
sum += arr[i];
product *= arr[i];
}
*sumPtr = sum;
*productPtr = product;
}
2. void countPositiveNegativeZero(int* arr, int size, int* positivePtr, int* negativePtr, int* zeroPtr) {
int positive = 0;
int negative = 0;
int zero = 0;
for (int i = 0; i < size; i++) {
if (arr[i] > 0) {
positive++;
} else if (arr[i] < 0) {
negative++;
} else {
zero++;
}
}
*positivePtr = positive;
*negativePtr = negative;
*zeroPtr = zero;
}
3. int* findSubarray(int* A, int sizeA, int* B, int sizeB) {
for (int i = 0; i <= sizeA - sizeB; i++) {
bool found = true;
for (int j = 0; j < sizeB; j++) {
if (A[i+j] != B[j]) {
found = false;
break;
}
}
if (found) {
return &A[i];
}
}
return nullptr;
}
4. int* removeNegative(int* arr, int size) {
int countPositive = 0;
for (int i = 0; i < size; i++) {
if (arr[i] > 0) {
countPositive++;
}
}
int* positiveArr = new int[countPositive];
int j = 0;
for (int i = 0; i < size; i++) {
if (arr[i] > 0) {
positiveArr[j] = arr[i];
j++;
}
}
return positiveArr;
}
5. void addBlock(int** arrPtr, int* sizePtr, int* block, int blockSize) {
int newSize = *sizePtr + blockSize;
int* newArr = new int[newSize];
for (int i = 0; i < *sizePtr; i++) {
newArr[i] = (*arrPtr)[i];
}
for (int i = 0; i < blockSize; i++) {
newArr[*sizePtr + i] = block[i];
}
delete[] *arrPtr;
*arrPtr = newArr;
*sizePtr = newSize;
}