1
Масиви
Масив – це група однотипних елементів, що мають загальне ім'я і розташованих в пам'яті поруч.
Особливості:
•усі элементи мають один тип
•увесь масив має одно им’я
•усі элементи розташовані в пам’яті поруч
Приклади:
•список учнів в класі
•квартири у будинку
•школи в місті
•дані про температуру повітря за рік
Масиви |
|
|
|
2 |
|
|
|
|
НОМЕР |
||
|
|
|
|
|
|
A масив |
|
|
|
елементу |
|
|
|
|
масиву |
||
|
2 |
|
4 (ІНДЕКС) |
||
0 |
1 |
3 |
|||
5 |
10 |
15 |
20 |
25 |
|
A[0] A[1] |
ЗНАЧЕННЯ ] |
A[4] |
|
елементу масиву |
|
|
|
НОМЕР (ІНДЕКС) |
ЗНАЧЕННЯ |
A[2] |
елементу масиву: |
елементу масиву:15 |
2 |
!Нумерація елементів масиву в Сі++ починається
зНУЛЯ!
3
Оголошення масивів
Приклади:
int X[10], Y[10]; float A[20]; char s[80];
З привласненням початкових значень :
int A[4] = { 8, -3, |
інші |
|
нульові! |
||
float B[2] = { 1. }; |
||
|
char C[3] = { 'A', '1', 'Ю' };
! Якщо початкові значення не задані, в осередках знаходиться "сміття"!
4
Що неправильно?
const int N = 10; float A[N];
int A[10];
A[10] = 0;
float X[5]; int n = 1; X[n-2] = 4.5;
X[n+8] = 12.;
int X[4.5];
вихід за межі масиву
(стираються дані в пам'яті)
дробова частина відкидається
(помилки немає)
int X[4];
X[2] = 4.5;
float A[2] = { 1, 3.8 };
float B[2] = { 1., 3.8, 5.5 };
5
Завдання
«4»: Ввести c клавіатури масив з 5 елементів, знайти середнє арифметичне усіх елементів масиву.
Приклад:
Введіть п'ять чисел:
4 15 3 10 14
середнє арифметичне 9.200
«5»: Ввести c клавіатури масив з 5 елементів, знайти мінімальний з них.
Приклад:
Введіть п'ять чисел:
4 15 3 10 14
мінімальний елемент 3
! |
При зміні константи N інша програма |
не повинна змінюватися! |
6
Завдання
«4»: Заповнити масив з 10 елементів випадковими числами в інтервалі [- 10.10] і знайти в нім максимальний і мінімальний елементи і їх номери.
Приклад:
Початковий масив:
4 -5 3 10 -4 -6 8 -10 1 0
максимальний a[4]=10
мінімальний a[8]=-10
«5»: Заповнити масив з 10 елементів випадковими числами в інтервалі [- 10.10] і знайти в нім два максимальні елементи і їх номери.
Приклад:
Початковий масив:
4 -5 3 10 -4 -6 8 -10 1 0 максимальні a[4]=10, a[7]=8
7
Реверс масиву
Задача: переставити елементи масиву в зворотному порядку (виконати інверсію).
0 |
1 |
… N-2 N-1 |
0 |
1 |
… N-2 N-1 |
3 |
5 |
… 9 7 |
7 |
9 |
… 5 3 |
сума індексів N-1
Алгоритм:
поміняти місцями A[0] і A[N-1], A[1] і A[N-2], …
Псевдокод:
for ( i = 0; i < N / 2 ; i++ )
//поміняти місцями A[i] і A[N - 1 - i]
?Що невірно?
8
Як переставити елементи?
Задача : поміняти місцями |
2 |
вміст двох чашок. |
1 |
|
3
Задача: поміняти місцями вміст двох елементів
пам'яті. |
x |
|
y |
c = x; |
6 |
2 |
4 |
x = y; |
|
|
|
|
y = c; |
1 |
|
|
|
||
? |
|
4 |
|
Чи можна обійтися без c? |
|||
c |
|||
|
|
3
9
Програма
main()
{
const int N = 10; int A[N], i, c;
//заповнити масив
//вивести початковий масив
for ( i = 0; i < N/2; i++ ) { c = A[i];
A[i] = A[N-1-i]; A[N-1-i] = c;
}
// вивести отриманий масив
}
10
Завдання
«4»: Заповнити масив з 10 елементів випадковими числами в інтервалі [- 10.10] і виконати інверсію окремо для 1-ої і 2-ої половин масиву.
Приклад:
Початковий масив: |
|
|
|
|
|
||||
4 |
-5 |
3 |
10 |
-4 |
|
-6 |
8 |
-10 |
1 0 |
|
|||||||||
|
|||||||||
Результат: |
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|||
-4 10 |
3 |
-5 |
4 |
|
1 |
-10 |
8 -6 |
||
|
0 |
||||||||
|
|||||||||
|
«5»: Заповнити масив з 12 елементів випадковими числами в інтервалі [- 12.12] і виконати інверсію для кожної третини масиву.
Приклад:
Початковий масив: |
|
|
|
|
|
|
|
|||||
4 |
-5 |
3 |
10 |
|
-4 |
-6 |
8 -10 |
|
1 |
0 |
5 |
7 |
|
|
|||||||||||
|
||||||||||||
|
|
|||||||||||
Результат : |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|||
10 |
3 |
-5 |
4 |
|
-10 |
8 |
-6 -4 |
|
7 |
5 |
0 |
1 |
|
|
|||||||||||
|
|
|||||||||||
|
|