Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теоретичний матеріал до теми.doc
Скачиваний:
1
Добавлен:
13.11.2019
Размер:
64.51 Кб
Скачать

Передача масивів у функції Одномірні масиви

Масиви можуть бути параметрами функцій, і функції як результат можуть повертати вказівник на масив. Розглянемо ці можливості.

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

При роботі з рядками — масивами типу char[], проблема розв'язується просто, оскільки останній елемент рядка має значення '\0'. Тому при обробці масиву-аргументу кожен його елемент аналізується на наявність символу кінця рядка.

Приклад 1. Рядок як параметр функції.

Потрібно скласти програму, що містить функцію, яка підраховує кількість елементів у рядку. Можливий варіант програми має вид:

//Масиви у функціях

#include <iostream.h>;

int dl(char[]);//прототип функції dl

void main()

{

char p[]="кафедра";

cout << "\n Довжина рядка дорівнює:" << dl(p);

}

int dl(char c[])

{

int i;

for(i=0;;i++)

if (c[i]=='\0') break;

return i;

}

У результаті виконання програми на екран буде видане повідомлення:

Довжина рядка дорівнює: 7.

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

Приклад 2. Одномірний масив як параметр функції.

Нехай потрібно скласти програму, у якій функція обчислює суму елементів масиву, що складає з 5 елементів. Можливий варіант програми має вид:

// Одномірний масив як параметр

#include <iostream.h>

int sum(float x[5])

{

float s=0;

for(int i=0;i<5;i++) s=s+x[i];

return s;

}

void main()

{

float z[5], y;

for(int i=0;i<5;i++)

{

cout<<"\n Введіть черговий елемент масиву:";

cin >> z[i];

}

y=sum(z);

cout<<"\n Сума елементів масиву:”<< y;

}

У результаті виконання програми на екран буде виведене значення суми елементів масиву z.

У приведеному прикладі заздалегідь відоме число елементів — 5, тому у функції всього один параметр — масив x. Оскільки у функції існує значення, що повертається, то виклик функції може бути тільки виразом чи частиною виразу. У програмі оператор присвоювання y=sum(z); містить такий вираз у правій частині. Тут аргументом функції є масив z.

Приклад 3. Одномірний масив з довільною кількістю елементів як параметр функції.

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

// Пошук максимального елемента

#include <iostream.h>

float max(int n,float a[])

{

float m=a[0];

for(int i=1;i<n;i++)

if (m<a[i]) m=a[i];

return m;

}

void main()

{

float z[6];

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

{

cout<<"\n Введіть черговий елемент масиву:";

cin >> z[i];

}

cout <<"\n Максимальний елемент масиву:"<< max(6,z);

}

У результаті виконання програми на екран монітора буде видане повідомлення зі значенням максимального елемента масиву z, який у даному прикладі складається із шести елементів.

Ім'я масиву являє собою константний вказівник на адресу нульового елемента масиву. Тому у будь-якого масиві, використовуваного як параметр функції, можна здійснювати зміну його елементів при виконанні тіла функції.

Приклад 4. Масиви з довільною кількістю елементів як параметри функції.

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

//Вказівники на масив як параметри

#include <iostream.h>;

void maxl(int,int*,int*,int*); // прототип функції

void main()

{

int a[] = {0,1,2,3,4};

int b[]={5,6,0,7,1};

int d[5];

maxl(5,a,b,d) ;

cout << "\n";

for (int i=0;i<5;i++)

cout << "\t" << d[i];

}

void maxl(int n,int *x,int *y,int *z)

{

for (int i=0;i<n;i++)

z[i]=x[i]>y[i] ? x[i]:y[i];

}

У результаті виконання програми на екран монітора будуть видані елементи результуючого масиву d: 5 6 2 7 4.