6.2. Приклад
Використовуючи вказівники, вивести на екран масив із заданою кількістю елементів.
#include <iostream.h>
#include <conio.h>
int main()
{
int *a;
int n;
cout<<"Enter number of elements in your massive:" <<endl;
cin>>n;
cout<<"Your massive: "<<endl;
a=new int [n];
for (int i=0;i<n;i++)
{
*(a+i)=i+1;
cout<<*(a+i)<<endl;
}
getch();
delete []a;
return 0;
}
Динамічним називається масив, розмірність якого стає відомою в процесі виконання програми.
В С++ для роботи з динамічними об’єктами використовують спеціальні операції new і delete. За допомогою операції new виділяється пам’ять під динамічний об’єкт (який створюється в процесі виконання програми), а за допомогою операції delete створений об’єкт видаляється з пам’яті.
Приклад. Виділення пам’яті під динамічний масив.
Нехай розмірність динамічного масиву вводиться з клавіатури. Спочатку необхідно виділити пам’ять під цей масив, а потім створений динамічний масив треба видалити.
…
int n;
cin>>n; // n — розмірність масиву
int *mas=new int[n]; // виділення пам’яті під масив
delete [] mas; // звільнення пам’яті
…
В цьому прикладі mas є вказівником на масив з n елементів. Оператор int *mas=new int[n] виконує дві дії: оголошується змінна типу вказівник, далі вказівнику надається адреса виділеної області пам’яті у відповідності з заданим типом об’єкта.
Для цього ж прикладу можна задати наступну еквівалентну послідовність операторів:
…
int n, *mas;
cin>>n;// n - розмірність масиву
mas=new int[n];// виділення пам’яті під масив
delete [] mas;// звільнення пам’яті
…
Якщо за допомогою операції new неможливо виділити потрібний об’єм пам’яті, то результатом операції new є 0.
Іноді при програмуванні виникає необхідність створення багатовимірних динамічних об’єктів. Програмісти-початківці за аналогією з поданим способом створення одновимірних динамічних масивів для двовимірного динамічного масиву розмірності n*k запишуть наступне
mas=new int[n][k]; // Невірно! Помилка!
Такий спосіб виділення пам’яті не дасть вірного результату. Наведемо приклад створення двовимірного масиву.
#include<iostream.h>
#include<conio.h>
int main()
{
int n;const m=5;
cout<<"input the number";
cin>>n;
int** a; //a - вказівник на масив вказівників на рядки
a=new int* [n]; //виділення пам’яті для масиву вказівників на n рядків
for(int i=0;i<n;i++)
a[i]=new int [m]; //виділення пам’яті для кожного рядка масиву розмірністю nxm
…
for(int i=0;i<n;i++)
{for(int j=0;j<m;j++)
cout<<a[i][j]<<" ";
cout<<endl;}
for(int i=0;i<n;i++)
delete [] a[i]; //звільнення пам’яті від кожного рядка
delete [] a; //звільнення пам’яті від масиву вказівників
getch();
return 0;
}
6.3. Порядок виконання роботи
6.3.1. Проаналізувати умову задачі.
6.3.2. Розробити алгоритм та створити програму розв’язання задачі згідно з номером варіанту.
6.3.3. Результати роботи оформити протоколом.
6.4. Варіанти завдань
1) Дано
послідовність чисел
|
|
2) Дано послідовність чисел . Отримати квадратну матрицю порядку n, елементами якої є числа , розташовані за схемою:
|
|
3) Заповнити матрицю послідовністю чисел, кратних 3 у наступному порядку:
|
|
4) Дано послідовність чисел . Отримати квадратну матрицю порядку n, елементами якої є числа , розташовані за схемою:
|
|
5) Дано послідовність чисел . Отримати квадратну матрицю порядку n, елементами якої є числа , розташовані за схемою:
|
|
6)
Дано послідовність чисел
|
|
7) Дано дійсну квадратну матрицю порядку n. Знайти всі непарні елементи у заштрихованій області.
|
|
8) Дано квадратну матрицю порядку n, елементи якої є цілими числами. Знайти всі менші від 100 числа-паліндроми (див. Лабораторну роботу № 2) із позначеної області.
|
|
9) Дано символьну квадратну матрицю порядку n. Обчислити кількість букв а над головною діагоналлю та кількість букв в під бічною діагоналлю, та замінити у матриці ці букви на символ *.
10)
Дано дійсну квадратну матрицю В.
Отримати цілочисельну квадратну матрицю
А
того ж порядку, в котрій елемент
=1,
якщо відповідний елемент початкової
матриці
,
більший від елемента, розташованого в
тому ж самому рядку на головній діагоналі,
в іншому випадку
=0.
11)
Дано натуральне число n
та дійсну квадратну матрицю порядку n.
Побудувати послідовність
нулів та одиниць, в котрій
,
тоді і тільки тоді, коли елементи i-го
рядка матриці утворюють послідовність,
що зростає або спадає.
12) Дано натуральне число n та натуральна квадратна матриця порядку n, кожний елемент котрої не перевищує 9. Побудувати послідовність із нулів та одиниць, в котрій , тоді і тільки тоді, коли елементи i-го стовпчика матриці утворюють паліндром.
13) Дано дійсну квадратну матрицю порядку 2n. Отримати нову матрицю, переставляючи її блоки розміру nxn:
|
|
14) Дано дійсну квадратну матрицю порядку 2n. Отримати нову матрицю, переставляючи її блоки розміру nxn:
|
|
15) Дано дійсну квадратну матрицю порядку 2n. Отримати нову матрицю, переставляючи її блоки розміру nxn:
|
|
16) Побудувати квадратну матрицю порядку n, заповнюючи заштриховану частину матриці натуральним рядом чисел (решта елементів матриці повинні дорівнювати нулю).
|
|
17)
Отримати квадратну матрицю порядку n
.
18) Утворити квадратну матрицю порядку n, заповнюючи заштриховану частину матриці квадратами натурального ряду чисел
|
|
19)
Створити квадратну матрицю порядку n
.
20)
Створити квадратну матрицю порядку n
21) Створити квадратну матрицю порядку n
.
22) Дано цілочисельну квадратну матрицю порядку n. Знайти значення елементів, що розташовані вище головної діагоналі та діляться на 5 без остачі. Вивести індекси відповідних елементів.
23)
Дано послідовність чисел
.
Отримати квадратну матрицю порядку n,
елементами якої є числа
,
розташовані за схемою:
24) Дано дійсну квадратну матрицю порядку n. Знайти найбільше за модулем число із значень елементів, розташованих в позначеній частині матриці.
25) Дано дійсну квадратну матрицю порядку n. Знайти найбільше із значень елементів, розташованих в позначеній частині матриці.
