Звернення до елементів масиву

Для звернення до будь-якого елементу масиву використовується ім'я масиву і порядковий номер елемента, який би його відносну позицію серед інших елементів. Цей номер називається індексом; індекс записується в квадратних дужках. Індексація елементів масиву в мові Сі починається з нуля. тобто індекс змінюється від 0 до N-1, де N - кількість елементів масиву.
Таким чином, якщо масив оголошений:

його окремі елементи позначаються:

Тобто, до будь-якого елементу масиву можна звернутися, вказавши його ім'я та в квадратних дужках індекс елемента. наприклад:

Такі окремі елементи масиву в програмі можна використовувати як звичайні змінні.
Як позначення індексу також можна використовувати будь-яку целочисленную змінну, попередньо визначивши її значення. Над такими змінними-індексами можна виконувати арифметичні операції:

Оскільки масив - це цілий агрегат даних, ввести його як просту змінну неможливо. Елементи масиву вводяться по одному.
Якщо масив зовсім невеликий, наприклад, що містить всього чотири елементи:

Ви самі можете додати за допомогою чотирьох функцій scanf:

scanf ( "% f", s [0]);
scanf ( "% f", s [1]);
scanf ( "% f", s [2]);
scanf ( "% f", s [3]);

або за допомогою однієї такої функції:

Однак в реальних задачах, як правило, масиви набагато більше, тому їх вводять з використанням оператора циклу. Попередньо потрібно визначити реальну кількість елементів масиву, з яким буде працювати програма.
Нехай у нас є такий опис масиву:

Кількість елементів 100 зазначено з запасом; програма також може працювати з масивом, що складається з двох, восьми, п'ятдесяти і взагалі будь-якого числа елементів, менше або рівного 100. Тому попередньо слід описати змінну цілого типу, наприклад n - фактичне число елементів, і ввести це значення. Наведемо також змінну i - параметр циклу:

int n, i;
printf ( "\ nВведіте кількість елементів масиву <=100\n");
scanf ( ".", n);

Тепер можна і організувати цикл для введення масиву. З масивом найзручніше використовувати оператор циклу з параметром (як ви думаєте, чому?):

for (i = 0; i printf ( "\ nВведіте елемент \ n");
scanf ( ".", A [i]); // Введення елемента
>

Тепер розберемо, як подавати числа для введення масиву. Ми пам'ятаємо, що роздільником при введенні значень з клавіатури є пробіл. В принципі все значення можна ввести "в рядок" через пробіл:

9 8 7 6 5 4 3 2

Програма буде брати їх по одному з вхідного потоку кожен раз, коли зустрічає функцію scanf. Але такий введення виглядає негарно (спробуйте, переконайтеся самі!). Зручніше при введенні чергового елемента спочатку виводити текст підказки з пропозицією ввести елемент, а потім вводити елементи по одному, кожен раз натискаючи клавішу Enter.
Вивести масив на екран потрібно теж по одному елементу, тобто за допомогою оператора циклу:

for (i = 0; i printf ( ". \ n", A [i]); // Висновок елемента
>

Зберемо тепер все разом. Наша наступна невелика програма спочатку запитує число елементів масиву, потім вводить їх по одному значенню і виводить на екран:

Протокол роботи програми:

Питання для самоперевірки

1. Як дати опис масиву в програмі?
2. Як дізнатися, скільки байт пам'яті буде відведено компілятором під масив?
3. Для чого при зверненні до елементів масиву використовується індекс?
4. З якого значення починається нумерація елементів масиву?
5. Які операції можна виконувати з індексами?
6. Чому при роботі з масивами потрібен оператор циклу?

2. Завдання для самостійної роботи до уроку 13

3. У всіх завданнях слід скласти програму на мові Сі.

4. Введіть елемент A [0]
12
Введіть елемент A [1]
44
Введіть елемент A [2]
65
. і т.д.

5. 2. Дати опис масиву A. Ввести масив. Вивести елементи масиву в зворотному порядку (вказівка: використовувати цикл з убутним значенням параметра).

7. 4. Написати програму, яка обчислює площу трикутника за формулою Герона. Довжини сторін занести в масив.

Урок 14. Дії з масивами

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

12. Для масиву a кількість осередків вказано явно (в квадратних дужках). У масиву b в квадратних дужках нічого немає, але компілятор Сі допускає такий опис. Довжину масиву в другому випадку компілятор обчислює за кількістю початкових значень, перерахованих при ініціалізації. Після такого визначення елемент
b [0] дорівнює 3,
b [1] дорівнює 6 і т. д. до b [4]. який дорівнює 7.
Таким чином, для другого масиву буде виділено 5 елементів пам'яті, їх номери змінюються від 0 до 4 включно.
Ініціалізація дуже зручна на стадії налагодження програми, з тим, щоб кожен раз заново не вводити всі елементи масиву. Зрозуміло, в ході роботи програми вміст масивів може змінюватися.

Дії з масивами

14. Для роботи з масивами є безліч алгоритмів. Деякі з них схожі на ті, що ми розбирали в задачах на послідовності (тема 8, урок 11).
Головна відмінність послідовності від масиву то, що елементи послідовності вводяться в одну і ту ж комірку, і після введення наступного числа попереднє "затирається". У масиві ж все значення зберігаються, і звертатися до них можна багаторазово. Це відкриває широкі можливості для програмування багатьох завдань.
Багато алгоритми обробки масивів спираються на прості базові алгоритми.
До базових алгоритмах роботи з одновимірними масивами можна віднести наступні:
1. Сума елементів масиву.
2. Знаходження максимального (мінімального) елемента масиву.
3. Знаходження номера максимального елемента.
4. Підрахунок кількості елементів, що задовольняють заданій умові.

15. #include
#include
int main ()
float a [30]; // a - масив дійсних чисел
int count; // count - фактична кількість елементів, целочисленная змінна
int i; // Робоча змінна
float S; // S - сума елементів масиву
printf ( "Введіть кількість елементів масиву <=30\n");
scanf ( ".", count); // Введення фактичної кількості елементів масиву
for (i = 0; i printf ( "Введіть елемент \ n");
scanf ( "% f", a [i]);
>
// Тут починається обчислення суми
S = 0; // Обнуляємо значення осередки S
for (i = 0; i S = S + a [i]; // Накопичення суми
S = S / count; // Знаходимо середнє арифметичне, результат - в осередку S
printf ( "Середнє арифметичне =% f \ n", S); // Висновок результату на друк
return 0;
>

Як можна поліпшити цей код

Початок форми Кінець форми

Схожі статті