Добавил:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1-1 Программирование С++ / метод_лб_ пз_Інформатика.doc
Скачиваний:
5
Добавлен:
31.01.2021
Размер:
699.9 Кб
Скачать

Int *pmas;

pmas = mas;

cout << "Введіть 6 елементів масиву" << endl;

for ( i = 0; i < 6; i++) cin >>*pmas++;

// Наступний оператор знову встановлює покажчик на початок масиву

// (інакше він буде вказувати на наступну за масивом адресу)

pmas = mas;

for ( i =1; i < 6; i++)

{

stc = *(pmas + i);

j = i - 1;

while ( j >= 0 && stc > *(pmas+j))

{

*(pmas+j+1) = *(pmas+j);

j - - ;

}

*(pmas+j+1) = stc;

}

cout << "Результат" << endl;

for ( i = 0; i < 6; i++)

cout << i << " елемент " << *(pmas + i ) << endl;

// Можна використовувати і таку конструкцію оператора

// cout << i << " елемент " << * pmas++ << endl;

getch ( ); // Для затримки екрана виведення результату

return 0;

}

2.5 Масиви покажчиків

Як і інші змінні, покажчики можна групувати в масиви, кожен елемент якого містить адресу рядка масиву даних у пам'яті. У такий спосіб можна зберігати дані з "рваними" краями. Цей масив схожий на двовимірну таблицю з одним виключенням: усі рядки в такому масиві можуть мати різну довжину. При збереженні рядків це дозволяє заощаджувати пам'ять, а при виконанні сортування рядків, вона виконується значно швидше, тому що змінююється тільки покажчики, а не значення рядків.

fio

(0)

->

П

Е

Т

Р

О

В

\0

(1)

->

І

В

А

Н

О

В

\0

(2)

->

К

У

Ц

И

Й

\0

(3)

->

В

А

Р

І

Ч

\0

(4)

->

Ю

Ш

К

О

\0

(5)

->

П

Л

Ю

Щ

\0

Приведемо програму реалізуючу виведення подібної інформації з використанням масиву покажчиків.

// P2_11.CPP

#include < iostream>

using namespace std;

main ( )

{

char *fio [ ] = { "Петров",

"Іванов" ,

"Куций",

"Варич",

"Юшко",

"Плющ " };

int str;

for ( str = 0; str <= 5; str++)

cout << " stroka " <<( str +1 ) << ” = ” << *( fio+str ) << endl;

return 0;

}

Особливістю масиву покажчиків є те, що кожен з цих покажчиків елементів масиву може вказувати на масив довільної довжини. Так двовимірний масив чисел можна записати як матрицю, і як одновимірний масив покажчиків, наприклад: int matr[5][7]; чи int *pmt [5]; .

При цьому двовимірний масив розглядається як одновимірний масив рядків, кожен елемент якого — це теж масив стовпців, тобто масив масивів, тому індексування елементів матриці записується у вигляді mas [i][j]. Якщо двовимірний масив описаний за допомогою масиву покажчиків, то доступ до mas [i][j] елемента може здійснюватися одним зі способів:

* ( pm[i]+j ) або *( *( pm+i )+j ) .

Приклад 2.6 До елементів матриці, що мають парні значення, додати число і вивести отриману матрицю в природному вигляді.

Перший варіант програмної реалізації матриця описується явним способом і робота ведеться з її елементами.

// P2_12.CPP — робота ведеться без покажчиків.

#include < iostream>

using namespace std;