Добавил:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1-1 Программирование С++ / метод_лб_ пз_Інформатика.doc
Скачиваний:
5
Добавлен:
31.01.2021
Размер:
699.9 Кб
Скачать

5.2.2 Використання масивів - параметрів функцій

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

Vоid sort (int mas [ 30 ]); .

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

Void sort ( int mas [ ], int n ) ; .

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

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

//P5_2.CPP – використання масивів – параметрів функцій

#include < string.h >

#include < iostream >

using namespace std;

Void fun1 (char st [15]);

Int main ( )

{

char p[15] ="стіл ";

fun1 (p);

cout << "p=" << p << endl; // p="стілець "

return 0;

}

Void fun1 ( char st[15] )

{

cout <<"p=" << st << endl; // стіл

strcpy (st, "стілець ");

}

Результати виконання програми :

р=стіл

р=стілець

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

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

void fun1 (int mat [7][10]); // використовується матриця mat(7,10)

Якщо використовується багатовимірний масив невизначеної довжини, то невизначеним може бути тільки один вимір розмірності, що повинен бути першим, наприклад:

Void fun2 ( int mat [ ] [10], int rows, int cols );

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

// P5_3.CPP – обчислення середнього значення

// кожного стовпця матриці

#include < iostream >

using namespace std;

const int mincol = 1;

const int maxcol = 20;

const int minrow = 2;

const int maxrow = 30;

//Функція getnum ( ) для введення кількості рядків і стовпців

int getnum (const char *elemtype , int low , int high )

{

int n;

do

{

cout << " Введіть кількість " << elemtype

<< " N від [" << low << "] до [" << high << " ] : ";

cin >> n;

}

while (( n<low) || (n>high));

return n;

}

// Функція inmatr ( ) введення елементів матриці

void inmatr ( float matr [ ] [maxcol], int rows , int cols);

{

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

{

cout << ведіть"<< i << "рядок матриці " << endl;

for ( int j =0; j < cols ; j++)

cin >> matr [i][j];

}

cout << endl;

}

// Функція srcols ( ) одержання середніх значень стовпців

void srcols ( float matr [ ] [maxcol] , int rows , int cols )

{

float sum , sr;

for ( int j = 0; j < cols; j++ )

{

sum =0.0;

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

sum += matr [i][j];

sr = sum / rows;

cout << "середнє значення стовпця" << j << " = " << sr << endl;

}

}

// Головна програма

int main ( )

{

float matr [maxrow] [maxcol];

int rows, cols;

// Уведення кількості рядків і стовпців

rows = getnum ( "rows", minrow, maxrow );

cols = getnum ( "colnums" , mincol , maxcol);

// Уведення матриці

inmatr ( matr, rows , cols);

// Обчислення середнього значення стовпців матриці

srcols (matr , rows , cols);

return 0;

}

5.2.3 Використання функції як параметра значень

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

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

Приклад 5.4 Скласти програму c використанням функції обчислення інтегралів методом трапецій (точність обчислення е =10-3 ).

// P5_4.CPP – обчислення інтеграла методом трапеції

// використання функції як параметра значення

#include <math.h>

#include < iostream >

using namespace std;

const float e =1 e-3;

float fn1 (float x ) // підінтегральна функція 1-го інтеграла

{

return sgrt (1 +log (x));

}

float fn2 ( float x ) // підінтегральна функція 2-го інтеграла

{

return log (1 +pow (x,2)) / (1+pow (x,2));

}

float ft (int n, float a ,float b , float fun( float )) // функція методу трапецій

{

int i;

float s1 ,h, s=0;

do

{ s1 =s;

h = (b -a ) /n;

s = ( fun (a) +fun (b) ) / 2;

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

s += fun ( a + i *h );

s *= h; n *= 2;

} while ( fabs ( s-s1 ) > e );

return s; }