Предмет: Информатика, автор: Kukuwka0Ha0DepeBe

С++
Завдання 1. Написати функцію, яка отримує покажчик
на масив і його розмір, і повертає суму і добуток його
елементів у двох параметрах-покажчиках.
Завдання 2. Написати функцію, яка отримує покажчик
на масив і його розмір, і повертає кількість від’ємних,
додатних і нульових елементів масиву.
Завдання 3. Написати функцію, яка приймає як аргумент покажчики на два масиви (А і В) і розміри масивів.
Функція перевіряє, чи є масив В підмножиною масиву А
і повертає покажчик на початок знайденого фрагмента
або повертає 0 в іншому випадку.
Завдання 4. Написати функцію, яка отримує покажчик
на динамічний масив і його розмір. Функція має видалити з масиву всі від’ємні числа та повернути покажчик
на новий динамічний масив.
Завдання 5. Створити функцію, яка дає змогу додавати
блок елементів у кінець масиву.
Завдання 6. Створити функцію, яка дає змогу вставляти
блок елементів, починаючи з довільного індексу масиву.
Завдання 7. Створити функцію, яка дає змогу видаляти
блок елементів, починаючи з довільного індексу масиву

Ответы

Автор ответа: dimonchop
1

Відповідь:

Завдання 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;

}

Похожие вопросы
Предмет: Геометрия, автор: ariannagolodinskaa
Предмет: Қазақ тiлi, автор: sonyabozoeva