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

2.4. Покажчик на функцію

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

Покажчик на функцію визначається таким чином:

тип_функції(*ім’я_вказівника)(специфікація параметрів)

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

Виклик функції за допомогою покажчика має вигляд:

(*ім’я_вказівника)(список фактичних параметрів);

#include <iostream>

using namespace std;

int f1(char* S)

{

cout<<S<<"\n";

return 1;

}

void main()

{

char s[20]="\nfunction1";

int(*ptr1)(char*); //покажчик на функцію

ptr1=f1; //покажчику надається адреса функції f1

cout<<((*ptr1)(s)); //виклик функції f1 за допомогою покажчика

}

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

#include <iostream>

#include <math.h>

using namespace std;

typedef float(*fptr)(float);//тип-вказівник на функцію-рівняння

/*розв’язок рівняння методом половинного ділення, рівняння передається за допомогою покажчика на функцію */

float root(fptr f, float а, float b, float e)

{

float x;

do

{

x=(a+b)/2; //знаходимо середину відрізка

if ((*f)(а)*f(x)<0) //вибираємо відрізок

b=x;

else a=x;

}

while((*f)(x)>e && fabs(а-b) >e);

return x;

}

//функція, для якої шукаємо корінь

float testf(float x)

{

return x*x-1;

}

void main()

{

/*у функцію root передається покажчик на функцію, координати відрізка і точність */

float res=root(testf,0,2,0.0001);

cout<<”\nX=”<<res;

}

3. Постановка задачі

1. Написати функцію із параметрами за замовчуванням відповідно до варіанту, продемонструвати різні способи виклику функції:

  • з параметрами заданими явно

  • з пропущеними параметрами

  • частина параметрів задана явно, а частина пропущена.

2. Написати функцію із змінним числом параметрів відповідно до варіанту, продемонструвати виклик функції з різним числом параметрів.

3. Написати Перевантажені функції відповідно до варіанту. Написати демонстраційну програму для виклику цих функцій.

4. Написати шаблон функцій замість перевантажених функцій із завдання 3. Написати демонстраційну програму для виклику цих функцій. списку параметрів

4. Варіанти

варіанту

Функція з параметрами за замовчуванням

Функція зі змінним числом параметрів

Перевантажені функції і шаблон функції

1

Виведення прізвища, імені і по батькові

Мінімальний елемент в списку параметрів

Середнє арифметичне масиву

2

Виведення прізвища, імені і віку

Максимальний елемент в списку параметрів

Кількість від’ємних елементів в масиві

3

Виведення прізвища, курсу і групи

Кількість парних елементів в списку параметрів

Максимальний елемент в масиві

4

Виведення прізвища, імені і рейтингу

Середнє арифметичне елементів в списку параметрів

Мінімальний елемент в масиві

5

Виведення прізвища, курсу і рейтингу

Максимальний з елементів в списку параметрів, що стоять на парних місцях

Середнє арифметичне масиву

6

Виведення прізвища, адреси і віку

Максимальний з елементів в списку параметрів, що стоять на непарних місцях

Кількість від’ємних елементів в масиві

7

Виведення прізвища, імені і по батькові

Мінімальний з елементів в списку параметрів, що стоять на парних місцях

Максимальний елемент в масиві

8

Виведення прізвища, імені і віку

Мінімальний з елементів в списку параметрів, що стоять на непарних місцях

Мінімальний елемент в масиві

9

Виведення прізвища, курсу і групи

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

Середнє арифметичне масиву

10

Виведення прізвища, імені і рейтингу

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

Кількість від’ємних елементів в масиві

11

Виведення прізвища, курсу і рейтингу

Мінімальний елемент в списку параметрів

Максимальний елемент в масиві

12

Виведення прізвища, адреси і віку

Максимальний елемент в списку параметрів

Мінімальний елемент в масиві

13

Виведення прізвища, імені і по батькові

Кількість парних елементів в списку параметрів

Кількість від’ємних елементів в масиві

14

Виведення прізвища, імені і віку

Середнє арифметичне елементів в списку параметрів

Номер максимального елемента в масиві

15

Виведення прізвища, курсу і групи

Максимальний з елементів в списку параметрів, що стоять на парних місцях

Середнє арифметичне масиву