Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C++ Metod_new.doc
Скачиваний:
3
Добавлен:
10.11.2019
Размер:
939.52 Кб
Скачать

2. Сортування масивів

Приклад сортування масиву:

#include <iostream.h>

#include <stdlib.h>

#include <time.h>

#define MAX 10

// Функція заповнення масиву випадковими числами 0-99

void zap(int ara[])

{

int i;

randomize();//(не має місця у Visual C++)

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

ara[i] = rand()%100;

return;

}

// Функція виведення масиву

void print(int ara[])

{

int i;

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

cout << ara[i] << "\n";

return;

}

// Функція сортування масиву

void sort(int ara[])

{

int temp, i, j;

for (i = 0; i < (MAX - 1); i++)

{

for (j = i + 1; j < MAX; j++)

{

if (ara[i] > ara[j])

{

temp = ara[j];

ara[j] = ara[i];

ara[i] = temp;

}

}

}

return;

}

void main ()

{

int ara[MAX];

zap(ara);

cout << "Вихідний масив:\n";

print(ara);

sort(ara);

cout << "Результат сортування:\n";

print(ara);

}

3. Розміщення одномірного масиву в пам’яті

Для C++ ім’я масиву є дійсною адресою, по якій в пам’яті знаходиться перший елемент масиву. Припустимо, що ви визначаєте масив з ім’ям amo:

int amo[6]={4,1,3,7,9,2};

Н а рисунку 3 показано, як масив розміщується в пам’яті.

Рис.3. Розміщення масиву amo у пам’яті.

Відповідно до рисунку масив починається з адреси 4050, реальна адреса змінних встановлюється під час завантаження скомпільованої програми. Можна звертатися до масиву за допомогою звичайних правил з індексами або за допомогою зміни адреси масиву.

Записи amo[3] і (amo+3)[0] ідентичні.

У кожній із таких рядків відбувається звертання до 4-го елемента масива.

(amo+0)[3]

(amo+2)[1]

(amo-2)[5]

(1+amo)[2]

При виведенні рядків із символьних масивів робота з їхніми елементами шляхом зміни адрес більш корисна, ніж процедура з масивами цілих чисел.

Приклад:

char nam[]={’T’,’e’,’d’,’\0’,’E’,’v’,’a’,’\0’,

’S’,’a’,’m’,’\0’};

Номер елемента

Значення

[0]

T

[1]

Е

[2]

D

[3]

\0

[4]

E

[5]

V

[6]

A

[7]

\0

[8]

S

[9]

A

[10]

M

[11]

\0

cout <<nam; //Надрукує Ted

cout <<nam+4; //Надрукує Eva

cout <<nam+8; //Надрукує Sam

Особливості:

  • Незважаючи на те, що C++ автоматично не заносить у пам’ять нулі (або які-небудь інші значення), якщо ви під час оголошення ініціалізуєте декілька елементів (але не усе), інші заповнюються нулями.

  • На відміну від інших мов, C++ дозволяє вам привласнити значення незарезервовані членам масиву. Але це не варто робити, тому що ви зіпсуєте інші дані або код.

Так не можна: int cout[];

Так можна int cout[]={1,2,3};

  • Використання визначальних констант (#define) має переваги. При недостачі елементів у масиві можна змінити тільки один рядок у #define.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]