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; }
Int main ( )
{
Float y;
y = ft ( 20 , 2 , 2, 3.0, fn1 ) +ft ( 20, 0, 1.0, fn2 );
cout << "y=" << y << endl;
Return 0;
}
Результат виконання програми :
y = 1.29012
5.2.4 Звертання до функції і передача результату
Для звертання до функції досить написати її ім'я й у дужках записати значення або перелік фактичних аргументів. Фактичні аргументи повинні бути записані в тій же послідовності, що і формальні і мати відповідний тип (крім аргументів за замовчуванням і перевантаженими функціями). Якщо формальними аргументами функції є параметри значення й у ній не використовуються глобальні змінні, то функція може передати в програмуб яка Ії викликає, лише одне значення, що записується в операторі return . Це значення передається в місце виклику функції. Фрагмент програми, що підтверджує вищевикладене може мати вигляд :
Double sgr (double);
Main( )
{
cout << "Квадрат числа=" << sgr ( 10 ) << endl;
}
Double sqr (double p)
//Повернення за значенням
{
return p*p;
}
У результаті буде виведено:
Квадрат числа = 100.
Використовуючи оператор return можна також організувати достроковий вихід з функції. Якщо з функції треба передати не одне, а кілька значень, то можна або використовувати передачу параметрів за покажчиком, або використати посилання, глобальні змінні, або масиви.
Ім'я функції ¾ це константа - покажчик на функцію, що вказує на адресу місця входу (адреса першої машинної команди) функції. Слід зазначити, що можливо також опис і покажчиків перемінних на функції. Для цього використовується операція разіменувания "*", функції описані в такий спосіб повинні повертати покажчик на тип, тобто його адреса.
Приклад 5.5 Обчислити функцію загального вигляду для заданого значення аргументу xз використанням функції, у яку коефіцієнти a, bі cможуть бути введені за замовчуванням.
// P5_5.CPP ¾ обчислення квадратної функції
//коефіцієнти квадратної залежності можуть
// вводитися у функцію"за замовчуванням"
#include < iostream >
Using namespace std;
float ur ( float x, float а=0., floatb b =0.,float c=0.);
Int main ( )
{
float а =1., b = 2., c = 3., x = 0.5, y;
cout << " Уведені всі аргументи " << endl;
y = ur ( x, a, b, c);
cout << " y = "<< y << endl;
cout << " Введені аргументи x, a, b " << endl;
y =ur ( x, a, b);
cout << " y = "<< y << endl;
cout << " Введений аргумент x " << endl;
y =ur ( x );
cout << " y = "<< y << endl;
}
// Функція обчислення квадратної функції