ЛАБОРАТОРНАЯ РАБОТА № 9 ПРОГРАММИРОВАНИЕ ЗАДАЧ ОБРАБОТКИ ДИНАМИЧЕСКИХ МАССИВОВ
Цельработы
Изучение средств языка программирования для управления дина- мической памятью. Изучение принципов алгоритмизации и разработки программ, связанных с обработкой динамических массивов. Изучение принципов построения и параметризации шаблонов функций.
Ход работы
Исходные данные:
размер массива: size_t n;
массив чисел: std::vector iArray;
Выходные данные:
Массивы отрицательных и положительных чисел:
struct Result
{
std::vector outArrayPositive;
std::vector outArrayNegative;
};
Алгоритм:
Реализация
#include #include #include
using namespace std;
struct Result
{
public:
std::vector outArrayPositive;
std::vector outArrayNegative;
};
int main()
{
srand(time(0));
size_t n;
Result result;
std::cout << "Enter count of elms: ";
std::cin >> n;
std::vector iArray(n);
std::cout << "[";
for (auto& i : iArray)
{
i = rand() % 10000 / 100. - 50;
std::cout << i << " ";
i <= 0 ? (void)result.outArrayNegative.insert(result.outArrayNegative.begin(), i) : result.outArrayPositive.push_back(i);
}
std::cout << "\b]\n";
std::cout << "Positive: ";
for (auto& i : result.outArrayPositive)
{
std::cout << i << " ";
}
std::cout << "\nNegative: ";
for (auto& i : result.outArrayNegative)
{
std::cout << i << " ";
}
Контрольные вопросы: Какие виды памяти вы знаете? Каково их назначение?
Статическое и динамическое. Статическая память выделяется до запуска программы, динамическая же выделяется в куче и в режиме “live”.
Что такое динамическая память? В чем заключается ее особенность? Правила работы с динамической памятью.
Динамическая память – память, выделяемая во время работы программы в “куче”. При работе с динамической памятью ее нужно выделить и освободить после использования.
Как работают операторы new и delete?
new – выделяет память, delete – высвобождает.
Что такое шаблон функции? Для чего он используется?
Шаблоны функции используются для параметризации параметров. Таким образом, компилятор сам создаст определения для нужных типов, если они используются в программе.
На каком механизме базируется реализация шаблонов функций?
На механизме перегрузки функций.
Что такое параметризация шаблона? Чем он параметризируется?
Параметризация шаблона – определение параметров шаблона.
В чем заключается параметризация шаблона?
При встрече параметра компилятор не будет сразу “реализовывать” функцию, но сначала дождется её вызова. После этого он выведет, какие параметры были переданы, и создаст определение для конкретно этой функции.
Вывод: в ходе работы изучил описание и принцип работы с пользовательскими типами данных: перечисляемый тип, записи. Изучил принципы алгоритмизации задач, связанных с обработкой файлов разного типа. Изучил перегрузки функций.