Лабораторна робота №9 Передача масивів у функції Мета роботи: отримати навички роботи з масивами у функціях. Теоретичні icon

Лабораторна робота №9 Передача масивів у функції Мета роботи: отримати навички роботи з масивами у функціях. Теоретичні



НазваниеЛабораторна робота №9 Передача масивів у функції Мета роботи: отримати навички роботи з масивами у функціях. Теоретичні
Дата конвертации15.07.2013
Размер64.18 Kb.
ТипЛабораторна робота
скачать >>>



Лабораторна робота №9
Передача масивів у функції




Мета роботи: отримати навички роботи з масивами у функціях.

9.1. Теоретичні відомості




Одномірні масиви



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

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

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

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

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

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

#include ;

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

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

float max(int n,float a[])

{

float m=a[0];

for(int i=1;i
if (m
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 ;

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
z[i]=x[i]>y[i] ? x[i]:y[i];

}

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

Багатовимірні масиви



Особливістю мови С++ є несамовизначеність масивів, тому за іменем масиву неможливо довідатися його розмірність і розміри за кожним виміром. Крім того, у С++ багатовимірні масиви не визначені. Наприклад, якщо оголошений масив float d[3][4][5], те це не тривимірний, а одномірний масив d, що включає три елементи, кожний з який має тип float [4][5]. У свою чергу, кожний з чотирьох елементів типу float [5]. І, відповідно, кожний з цих елементів є масивом з п'яти елементів типу float. Ці особливості ускладнюють використання масивів як параметрів функцій.

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

9.2. Приклади




Приклад 1



Двовимірний масив як параметр функції.

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

#include

float summa(int n,float a[][3])

{

float s=0;

for(int i=0;i
for(int j=0;j<3;j++)

s=s+a[i][j];

return s;

}

void main()

{

float z[4][3]={0,1,2,3,4,5,6,7,7,6,5,4 };

cout<< "\n Сума елементів матриці дорівнює" << summa(4,z);

}

У результаті виконання програми на екран буде виведене повідомлення: “Сума елементів матриці дорівнює 50”.

Приклад 2



Допоміжний масив вказівників на масив як параметр функції.

Потрібно скласти програму з функцією, що повертає як результат мінімальний елемент матриці d розміром mxn.

#include

float min(int m,int n,float *p[]);

void main()

{


float d[3][4]={1,2,-2,4,

5,0,-3,18,

-9,6,7,9};

float *r[]=

{

(float *) &d[0], (float *) &d[1],(float *) &d[2]

};

int m=3;

int n=4;

cout <<"\n Мінімальний елемент матриці дорівнює "<< min(m,n,r);

}

float min(int m,int n,float *p[])

{

float x=p[0][0];

for (int i=0;i
for (int j=0;j
if (x>p[i][j]) x=p[i][j];

return x;

}

У результаті виконання програми на екран буде виведене повідомлення: “Мінімальний елемент матриці дорівнює –9”.

9.3. Порядок виконання роботи



9.3.1. Проаналізувати умову задачі.

9.3.2. Розробити алгоритм та створити програму розв’язання задачі згідно з номером варіанту.

9.3.3. Результати роботи оформити протоколом.

9.4. Варіанти завдань



1. Скласти функцію, що підраховує кількість повторень заданого символу в довільному рядку.

2. Скласти програму, у якій функція знаходить мінімальний елемент у довільному одномірному масиві.

3. Скласти функцію обчислення скалярного добутку двох векторів.

4. Скласти функцію обчислення добутку двох матриць.

5. Скласти функцію обчислення суми двох матриць.

6. Скласти функцію обчислення добутку вектора на число.

9.5. Контрольні запитання



1. Яким чином можна визначити кількість елементів у рядку символів?

2. У чому відмінність оформлення списку параметрів, коли відомо і не відомо кількість елементів у вхідному для функції масиві?

3. Що являє собою ім'я масиву і як воно зв'язане з нульовим елементом масиву?

4. Яким чином можна одержати як результат виконання функції масив?

5. Як визначаються в С++ багатомірні масиви?

6. Поясніть зв'язок між масивами і вказівниками.



Похожие:

Лабораторна робота №9 Передача масивів у функції Мета роботи: отримати навички роботи з масивами у функціях. Теоретичні iconЛабораторна робота №7 Вказівники та посилання. Динамічні масиви Мета роботи : отримати навички роботи з вказівниками, посиланнями та динамічними масивами. Теоретичні
Мета роботи: отримати навички роботи з вказівниками, посиланнями та динамічними масивами
Лабораторна робота №9 Передача масивів у функції Мета роботи: отримати навички роботи з масивами у функціях. Теоретичні iconЛабораторна робота №5 Функції Мета роботи : отримати навички роботи з функціями. Теоретичні
Кожна програма у своєму складі повинна мати головну функцію main(). Саме функція main() забезпечує створення точки входу в об’єктний...
Лабораторна робота №9 Передача масивів у функції Мета роботи: отримати навички роботи з масивами у функціях. Теоретичні iconЛабораторна робота №10 Робота з рядками (string) Мета роботи : отримати навички роботи з рядками. 10 Теоретичні
В с++ з'явилася дуже корисна бібліотека роботи з рядками. Вона досить ефективна І дозволяє легко вирішувати наступні задачі
Лабораторна робота №9 Передача масивів у функції Мета роботи: отримати навички роботи з масивами у функціях. Теоретичні iconЛабораторна робота №2 Умовна операція та множинний вибір Мета роботи : отримати навички роботи з умовною операцією та оператором множинного вибору. Теоретичні
Мета роботи: отримати навички роботи з умовною операцією та оператором множинного вибору
Лабораторна робота №9 Передача масивів у функції Мета роботи: отримати навички роботи з масивами у функціях. Теоретичні iconЛабораторна робота №6 Масиви Мета роботи : отримати навички роботи з одно та багатовимірними масивами. Теоретичні
Масив являє собою набір однотипних об’єктів, які мають спільне ім’я і відрізняються місцезнаходженням в цьому наборі (або індексом,...
Лабораторна робота №9 Передача масивів у функції Мета роботи: отримати навички роботи з масивами у функціях. Теоретичні iconЛабораторна робота №8 Рекурсивні функції Мета роботи : отримати навички роботи з рекурсивними функціями. Теоретичні
Така необхідність виникає при реалізації динамічних структур даних, таких як стеки, дерева, черги. Для реалізації рекурсивних алгоритмів...
Лабораторна робота №9 Передача масивів у функції Мета роботи: отримати навички роботи з масивами у функціях. Теоретичні iconЛабораторна робота №3 Цикл while з передумовою та постумовою Мета роботи : Отримати навички роботи з циклом while Теоретичні
При виконанні програми часто виникає необхідність неодноразового повторення однотипних обчислень над різними даними. Для цих цілей...
Лабораторна робота №9 Передача масивів у функції Мета роботи: отримати навички роботи з масивами у функціях. Теоретичні iconЛабораторна робота №1 Принципи програмування на С++ Мета роботи : отримати навички роботи з типами даних та виразами. Теоретичні
Кожна програма на С++ у своєму складі повинна мати головну функцію main(). Саме функція main() забезпечує створення точки входу в...
Лабораторна робота №9 Передача масивів у функції Мета роботи: отримати навички роботи з масивами у функціях. Теоретичні iconЛабораторна робота №4 Цикл for мета роботи : отримати навички роботи з циклом for. Теоретичні
При цьому виконуються три операції: ініціалізація лічильників циклів, порівняння його значення з деяким граничним значенням і зміна...
Лабораторна робота №9 Передача масивів у функції Мета роботи: отримати навички роботи з масивами у функціях. Теоретичні iconЛабораторна робота 1 Тема. Класи та об’єкти. Мета роботи: засвоїти основні поняття об’єктно-орієнтованого програмування на прикладі мови програмування С++. Теоретичні
Основні поняття, потрібні для виконання роботи. Це 1 класи; 2 область доступу; 3 ієрархія класів
Разместите кнопку на своём сайте:
Документы


База данных защищена авторским правом ©gua.convdocs.org 2000-2015
При копировании материала обязательно указание активной ссылки открытой для индексации.
обратиться к администрации
Документы

Разработка сайта — Веб студия Адаманов