Лабораторная работа №9 программирование задач обработки динамических массивов



Дата08.12.2023
өлшемі126,33 Kb.
#195669
түріЛабораторная работа
Байланысты:
8 ЛР10





ЛАБОРАТОРНАЯ РАБОТА № 9
ПРОГРАММИРОВАНИЕ ЗАДАЧ ОБРАБОТКИ ДИНАМИЧЕСКИХ МАССИВОВ



  1. Цель работы

Изучение средств языка программирования для управления дина- мической памятью. Изучение принципов алгоритмизации и разработки программ, связанных с обработкой динамических массивов. Изучение принципов построения и параметризации шаблонов функций.

  1. Ход работы





    1. Исходные данные:

  • размер массива: size_t n;

  • массив чисел: std::vector iArray;

    1. Выходные данные:

Массивы отрицательных и положительных чисел:
struct Result
{
std::vector outArrayPositive;
std::vector outArrayNegative;
};


    1. Алгоритм:




    1. Реализация

#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 << " ";
}

return 0;


}

    1. Тестирование

Табл. 1. Тестирование

Input

Output

Must be

3
[-38.5 13.71 22.24 ]



Positive: 13.71 22.24
Negative: -38.5

Positive: 13.71 22.24
Negative: -38.5

4
[-36.57 29.35 -23.66 -31.33 ]

Positive: 29.35
Negative: -31.33 -23.66 -36.57

Positive: 29.35
Negative: -31.33 -23.66 -36.57

5
[-34.35 1.62 -27.87 47.72 28.56 ]

Positive: 1.62 47.72 28.56
Negative: -27.87 -34.35

Positive: 1.62 47.72 28.56
Negative: -27.87 -34.35







  1. Контрольные вопросы:

    1. Какие виды памяти вы знаете? Каково их назначение?

Статическое и динамическое. Статическая память выделяется до запуска программы, динамическая же выделяется в куче и в режиме “live”.



    1. Что такое динамическая память? В чем заключается ее особенность? Правила работы с динамической памятью.

Динамическая память – память, выделяемая во время работы программы в “куче”. При работе с динамической памятью ее нужно выделить и освободить после использования.


    1. Как работают операторы new и delete?

new – выделяет память, delete – высвобождает.



    1. Что такое шаблон функции? Для чего он используется?

Шаблоны функции используются для параметризации параметров. Таким образом, компилятор сам создаст определения для нужных типов, если они используются в программе.



    1. На каком механизме базируется реализация шаблонов функций?

На механизме перегрузки функций.



    1. Что такое параметризация шаблона? Чем он параметризируется?

Параметризация шаблона – определение параметров шаблона.



    1. В чем заключается параметризация шаблона?

При встрече параметра компилятор не будет сразу “реализовывать” функцию, но сначала дождется её вызова. После этого он выведет, какие параметры были переданы, и создаст определение для конкретно этой функции.


Вывод: в ходе работы изучил описание и принцип работы с пользовательскими типами данных: перечисляемый тип, записи. Изучил принципы алгоритмизации задач, связанных с обработкой файлов разного типа. Изучил перегрузки функций.



Достарыңызбен бөлісу:




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет