Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






return 0;






}

 

Созданный одномерный динамический массив заполняется случайными вещественными числами, полученными c помощью функций генерации случайных чисел, причём числа генерируются в интервале от 1 до 10.

Интервал задается так - rand()%10+1. Чтобы получить случайные вещественные числа, выполняется операция деления с использованием явного приведения к вещественному типу знаменателя - float((rand()%10+1)).

Чтобы показать только два знака после запятой используем функцию setprecision(2), прототип которой находится в заголовочном файле < iomanip>. Функция time(0) генерирует случайное число.

Таким образом, получается последовательность случайных чисел:

По завершению работы с массивом А, он удаляется, таким образом, высвобождается память, отведенная под его хранение.

 

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

1. Что такое динамическая память?

2. Какие средства языка С++ используются для хранения данных с динамическим выделением памяти компьютера?

3. Для каких типов данных возможно динамическое распределение памяти?

4. В каком случае функции динамического распределения памяти возвращают нулевой указатель?

 

Теперь рассмотрим фрагмент кода, в котором показано, как объявляется двумерный динамический массив.

 

 

  // объявление двумерного динамического массива на 10 элементов: float **ptrarray = new float* [2]; // две строки в массиве for (int count = 0; count < 2; count++) ptrarray[count] = new float [5]; // и пять столбцов // где ptrarray – массив указателей на выделенный участок памяти под массив вещественных чисел типа float

Сначала объявляется указатель второго порядка float **ptrarray, который ссылается на массив указателей float* [2], где размер массива равен двум. После чего в циклеforкаждой строке массива объявленного в строке 2 выделяется память под пять элементов. В результате получается двумерный динамический массив ptrarray[2][5].Рассмотрим пример высвобождения памяти отводимой под двумерный динамический массив.

  // высвобождение памяти отводимой под двумерный динамический массив: for (int count = 0; count < 2; count++) delete [] ptrarray[count]; // где 2 – количество строк в массиве

Объявление и удаление двумерного динамического массива выполняется с помощью цикла, так как показано выше, необходимо понять и запомнить то, как это делается. Разработаем программу, в которой создадим двумерный динамический массив.

  • MVS
  • Code:: Blocks
  • Dev-C++
  • QtCreator
  // new_delete_array2.cpp: определяет точку входа для консольного приложения.   #include " stdafx.h" #include < iostream> #include < ctime> #include < iomanip> using namespace std;   int main(int argc, char* argv[]) { srand(time(0)); // генерация случайных чисел // динамическое создание двумерного массива вещественных чисел на десять элементов float **ptrarray = new float* [2]; // две строки в массиве for (int count = 0; count < 2; count++) ptrarray[count] = new float [5]; // и пять столбцов // заполнение массива for (int count_row = 0; count_row < 2; count_row++) for (int count_column = 0; count_column < 5; count_column++) ptrarray[count_row][count_column] = (rand() % 10 + 1) / float((rand() % 10 + 1)); //заполнение массива случайными числами с масштабированием от 1 до 10 // вывод массива for (int count_row = 0; count_row < 2; count_row++) { for (int count_column = 0; count_column < 5; count_column++) cout < < setw(4) < < setprecision(2) < < ptrarray[count_row][count_column] < < " "; cout < < endl; } // удаление двумерного динамического массива for (int count = 0; count < 2; count++) delete []ptrarray[count]; system(" pause"); return 0; }

При выводе массива была использована функция setw(), если вы не забыли, то она отводит место заданного размера под выводимые данные. В нашем случае, под каждый элемент массива по четыре позиции, это позволяет выровнять, по столбцам, числа разной длинны (см. Рисунок 3).

CppStudio.com

2.7 10 0.33 3 1.4 6 0.67 0.86 1.2 0.44Для продолжения нажмите любую клавишу...

 

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.