Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

ПРОГРАММИРОВАНИЕ С++. НАПИСАТЬ ПРОГРАММУ

Михаил Кузнец Ученик (67), на голосовании 4 месяца назад
Разработать функцию в соответствии с вариантом. Функции с переменным числом аргументов реализовывать посредством вариативных шаблонов.
Варианты заданий:

  1. Написать функцию resize(), меняющую размер массива произвольного типа данных. Функция принимает в качестве аргумента указатель на массив, количество элементов массива, новое число элементов.
Голосование за лучший ответ
Dians Мастер (2017) 5 месяцев назад
ПРОГРАММИРОВАНИЕ С++. НАПИСАТЬ ПРОГРАММУ
Разработать функцию в соответствии с вариантом. Функции с переменным числом аргументов реализовывать посредством вариативных шаблонов.
Варианты заданий:

Написать функцию resize(), меняющую размер массива произвольного типа данных. Функция принимает в качестве аргумента указатель на массив, количество элементов массива, новое число элементов.

 #include  
#include

template
T* resizeArray(T* arr, size_t currentSize, size_t newSize) {
T* newArray = new T[newSize];
size_t elementsToCopy = std::min(currentSize, newSize);
std::copy(arr, arr + elementsToCopy, newArray);
delete[] arr;
return newArray;
}

int main() {
int* intArray = new int[5]{1, 2, 3, 4, 5};
size_t currentSize = 5;
size_t newSize = 8;

int* resizedIntArray = resizeArray(intArray, currentSize, newSize);

std::cout << "Resized Array:" << std::endl;
for (size_t i = 0; i < newSize; ++i) {
std::cout << resizedIntArray[i] << " ";
}
std::cout << std::endl;

// Освобождаем память
delete[] resizedIntArray;

return 0;
}

Сделал ИИ, ссылка.
Сухачев Мудрец (12981) 5 месяцев назад
 #include  
#include // для std::min
#include // для std::memcpy

template
void resize(T*& array, size_t current_size, size_t new_size) {
// Создаем новый массив с новым размером
T* new_array = new T[new_size];

// Копируем элементы из старого массива в новый
size_t min_size = std::min(current_size, new_size);
std::memcpy(new_array, array, min_size * sizeof(T));

// Удаляем старый массив
delete[] array;

// Устанавливаем указатель на новый массив
array = new_array;
}

int main() {
// Пример использования функции resize
int* array = new int[5] {1, 2, 3, 4, 5};
size_t current_size = 5;
size_t new_size = 8;

std::cout << "Исходный массив: ";
for (size_t i = 0; i < current_size; ++i) {
std::cout << array[i] << " ";
}
std::cout << std::endl;

// Изменяем размер массива
resize(array, current_size, new_size);

std::cout << "Измененный массив: ";
for (size_t i = 0; i < new_size; ++i) {
std::cout << array[i] << " ";
}
std::cout << std::endl;

// Освобождаем память
delete[] array;

return 0;
}
Похожие вопросы