пр4
.docxПрактическая работа №7
Динамические массивы
Цель работы: Получить практические навыки выделения, перераспределения и освобождения памяти при работе с динамическими массивами
Задания:
-
Сформировать динамический одномерный массив, заполнить его случайными числами и вывести на печать.
Удалить все элементы с нечетными индексами и вывести полученный массив на печать.
-
Сформировать динамический двумерный массив, заполнить его случайными числами и вывести на печать.
Добавить k столбцов в начало матрицы и вывести полученный массив на печать.
Листинг для задания 1:
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int n;
cout << "Enter size of array: ";
cin >> n;
int* a = new int[n];
int* new_a = new int[n];
int j = 0;
cout << "Array: " << endl;
for (int i = 0; i < n; i++){
a[i] = rand() % 100 - 20;
cout << a[i] << "\t";
if (i % 2 == 0)
new_a[j++] = a[i];
}
cout << endl;
delete[] a;
cout << "New array: " << endl;
for (int i = 0; i < j; i++){
cout << new_a[i] << "\t";
}
delete[] new_a;
return 0;
}
Результат выполнения:
Листинг для задания 2:
#include <iostream>
#include <cstdlib>
using namespace std;
const int Size = 100;
int main()
{
int n, k;
cout << "Enter size of array: ";
cin >> n;
int** a = new int*[n];
for (int i = 0; i < n; i++)
a[i] = new int[Size];
cout << "Array: " << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++){
a[i][j] = rand() % 40 - 20;
cout << a[i][j] << "\t";
}
cout << endl;
}
cout << "Enter k: ";
cin >> k;
if (k > 0) {
for (int j = n - 1; j >= 0; j--)
for (int i = 0; i < n; i++)
a[i][j + k] = a[i][j];
for (int i = 0; i < n; i++)
for (int j = 0; j < k; j++)
a[i][j] = a[i][j] = rand() % 40 - 20;
}
cout << "New Array: " << endl;
for (int i = 0; i < n; i++){
for (int j = 0; j < n + k; j++)
cout << a[i][j] << "\t";
cout << endl;
}
return 0;
}
Результат выполнения: