Вопрос задан 23.09.2023 в 15:09. Предмет Информатика. Спрашивает Крюковский Никита.

Напишіть функцію "resizeArray", яка приймає вказівник на динамічний масив цілих чисел, поточний

розмір масиву та новий розмір. Функція повинна змінитирозмір масиву, перевиділивши пам'ять відповідно до нового розміру. Якщоновий розмір більший за поточний, додаткові елементи масиву мають бутиініціалізовані значенням 0. Якщо новий розмір менший за поточний, зайвіелементи масиву мають бути видалені.будь поможіть!!!​
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Жумагали Ерулан.

Відповідь:
Задачу можна вирішити за допомогою функції realloc() в C++, яка змінює розмір вже виділеного блоку пам'яті. Ось приклад того, як це реалізувати:

#include <iostream>

#include <cstdlib> // для malloc, realloc і free

int* resizeArray(int* ptr, int oldSize, int newSize) {

   ptr = (int*)realloc(ptr, newSize * sizeof(int));

   if (ptr == NULL) {

       std::cerr << "Пам'ять не може бути перевиділена";

       return NULL;

   }

   // Ініціалізуємо нові елементи значенням 0

   if (newSize > oldSize) {

       for (int i = oldSize; i < newSize; i++) {

           ptr[i] = 0;

       }

   }

   return ptr;

}

int main() {

   int oldSize = 5, newSize = 10;

   int* arr = (int*)malloc(oldSize * sizeof(int));

   // Ініціалізуємо старий масив

   for (int i = 0; i < oldSize; i++) {

       arr[i] = i + 1;

   }

   // Змінюємо розмір масиву

   arr = resizeArray(arr, oldSize, newSize);

   // Друк нового масиву

   for (int i = 0; i < newSize; i++) {

       std::cout << arr[i] << " ";

   }

   free(arr);

   return 0;

}

Цей код перевиділяє пам'ять для масиву з новим розміром за допомогою realloc(). Якщо новий розмір більший за старий, то додаткові елементи ініціалізуються нулями.

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Звісно, ось приклад функції "resizeArray" на мові програмування C, яка виконує операції, описані в вашому завданні:

c
#include <stdio.h> #include <stdlib.h> // Функція для зміни розміру масиву int* resizeArray(int* array, int currentSize, int newSize) { // Виділити нову пам'ять для масиву з новим розміром int* newArray = (int*)malloc(newSize * sizeof(int)); if (newArray == NULL) { // Обробка помилки виділення пам'яті fprintf(stderr, "Помилка виділення пам'яті\n"); exit(1); } // Копіювати елементи зі старого масиву в новий int minSize = (currentSize < newSize) ? currentSize : newSize; for (int i = 0; i < minSize; i++) { newArray[i] = array[i]; } // Якщо новий розмір більший, ініціалізувати додаткові елементи значенням 0 if (newSize > currentSize) { for (int i = currentSize; i < newSize; i++) { newArray[i] = 0; } } // Звільнити пам'ять, що була виділена для старого масиву free(array); return newArray; } int main() { int currentSize = 5; int* myArray = (int*)malloc(currentSize * sizeof(int)); // Ініціалізувати початковий масив for (int i = 0; i < currentSize; i++) { myArray[i] = i; } // Змінити розмір масиву на 8 int newSize = 8; myArray = resizeArray(myArray, currentSize, newSize); currentSize = newSize; // Друк нового масиву for (int i = 0; i < currentSize; i++) { printf("%d ", myArray[i]); } printf("\n"); // Звільнити пам'ять free(myArray); return 0; }

Цей код створює функцію resizeArray, яка виділяє нову пам'ять для масиву з новим розміром, копіює елементи зі старого масиву в новий, і ініціалізує додаткові елементи значенням 0, якщо новий розмір більший за поточний. Крім того, код також містить приклад використання цієї функції в main.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос