Як і звичайні змінні, покажчики на функції можуть об'єднуватися в масиви покажчиків. Наприклад, інтерпретуємо опис масиву покажчиків на функції:
1) об'єкт з цим ім'ям є
4) на функції, які
5) повертають значення типу double.
Для ініціалізації масиву покажчиків на функції можна використовувати імена як стандартних функцій, так і розроблених користувачем, наприклад:
double f0 (double x) / * опис функцій * /
double f1 (double x) / * користувача * /
Ініціалізація масиву покажчиків на функції іменами функції (покажчиками-константами):
Доступ до елементів масиву fp виконується як до звичайних елементів масиву, наприклад:
x = 0.5; / * Значення аргументу * /
for (i = 0; i<3; i++) /* цикл по функциям */
fx = fp [i] (x); / * Виклик функції через масив покажчиків * /
printf ( "fx =% f \ n", fx); / * Висновок значення функції * /
Приклад. У задачі апроксимації функції користувач повинен задати кілька наборів з трьох базисних функцій серед безлічі функцій, пропонованих йому на вибір, з яких утворюється варіант апроксимуючої функції, яка бере участь в подальших обчисленнях. За результатами обчислень можна визначити набір базисних функцій, обепечивает, наприклад, мінімальне значення апроксимуючої функції.
У програмі обчислення значень варіантів апроксимуючої функції використовується масив покажчиків double (* fb [kb]) () на функції
fap = c [0] * fb [0] (x) + c [1] * fb [1] (x) + c [2] * fb [2] (x),
де fb [i] () - базисні функції.
Для вибору базисних функцій з набору досліджуваних функцій використовується функція int select_fb (int).
#define kv 2 / * кількість варіантів випробувань * /
#define kb 3 / * кількість базисних функцій * /
double f0 (double x)
double f1 (double x)
int select_fb (int number); / * Прототип функції вибору базисної функції * /
void main () / * головна функція * /
double c [] =; / * Масив коефіцієнтів апроксимації * /
double fap, x; / * Робочі змінні * /
int var, i; / * Параметри циклів * /
clrscr (); / * Очищення екрана * /
printf ( "Виберіть 3 базисних функцій з можливих: \ n"
"0) x 1) x * x 2) 1 / x 3) sin (x) 4) cos (x) 5) exp (x) \ n");
for (var = 0; var for (i = 0; i fb [i] = fptr [select_fb (i)]; / * Вибір і закріплення покажчика функції за базисної функцією * / printf ( "Введіть відмінний від нуля x (аргумент функції):"); / * Використання масиву базисних функцій: * / for (i = 0; i printf ( "Значення апроксимуючої функції fap =% -7.2f \ n", fap); getch (); / * Затримка екрану результатів * / / * Функція вибору випробуваної базисної функції із заданого набору. * / int select_fb (int number) while (sel<0 || sel>5) / * перевірка виходу номера за допустимі межі * / scanf ( ".", sel); / * Введення номера базисної функції * / return sel; / * Повернення номера обраної функції * / Виберіть 3 базисних функції з можливих: 0) x 1) x * x 2) 1 / x 3) sin (x) 4) cos (x) 5) exp (x) Вкажіть номер 1-й базисної функції (від 0 до 5): 0 Вкажіть номер 2-й базисної функції (від 0 до 5): 1 Вкажіть номер 3-й базисної функції (від 0 до 5): 2 Введіть відмінний від нуля x (аргумент функції): 1 Значення апроксимуючої функції fap = 6.00 Вкажіть номер 1-й базисної функції (від 0 до 5): 5 Вкажіть номер 2-й базисної функції (від 0 до 5): 0 Вкажіть номер 3-й базисної функції (від 0 до 5): 1 Введіть відмінний від нуля x (аргумент функції): 1 Значення апроксимуючої функції fap = 7.72 Загальні методичні вказівки. 1 Алгоритмізація обчислювальних процесів. 1 Засоби програмування обчислювальних процесів 4 Базові елементи мови Сі. 4 Дані та їх типи. 5 Введення-виведення даних. 6 Форматований введення. 7 Форматований вивід. 8 Неформатований введення-виведення. 9 Консольний введення-виведення. 10 Директиви препроцесора. 12 Вирази і операції. 12 Логічні вирази та операції. 14 РОБОТА з розгалужених процесів. 16 Оператор присвоювання. 16 Умовний оператор (if). 17 Оператори передачі управління. 20 Порожній оператор. 20 Оператор вибору (switch). 21 РОБОТА З циклічних процесів. 24 Цикли з фіксованим числом повторень. 24 Оператор циклу з передумовою (while). 24 Переривання циклу. 25 Цикли з невідомим числом повторень. 27 Обчислення зворотних послідовностей. 27 Оператор циклу з умовою поста (do). 28 Вкладені цикли і організація діалогу в програмі. 29 Оператор циклу з параметром (for). 30 Робота з масивами. 34 Опис масиву. 34 Доступ до елементів масиву. 35 Занесення даних в масив. 36 Багатовимірні масиви. 37 Символьні масиви. 39 Робота з функціями. 42 Визначення функції. 43 Виклик функції. 44 Передача параметрів функції. 45 Передача даних за значенням. 45 Прототип (шаблон) функції. 47 Блокова структура програми. 48 Зовнішні опису змінних. 51 Багатомодульні програми. 51 Проект програми. 51 Зовнішні посилання. 52 Створення проекту програми. 54 Робота з покажчиками. 55 Масиви покажчиків. 56 Покажчик на покажчик. 59 Покажчик на функцію. 60 Використання покажчика на функцію як аргумент. 62 Масиви покажчиків на функції. 63Схожі статті