АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Щоб створити вбудовану функцію, потрібно до її оголошення додати ключове слово inline

Читайте также:
  1. A2 Укажите, в каком значении употреблено слово «ХОЛОДНЫМ» (предложение 14).
  2. C) «Слово о полку Игореве»
  3. I. Вступительное слово учителя.
  4. I. Дайте англійські еквіваленти з наступних слів і словосполучень.
  5. I. Следует ли считать артикль отдельным словом? Каково его отношение к существительному?
  6. II. Оголошення теми й мети уроку
  7. II. Преобразуйте следующие предложения в вопросительные: а) без вопросительного слова; б) с вопросительным словом.
  8. II. СЛОВО В ЯЗЫКОВОМ/РЕЧЕВОМ МЕХАНИЗМЕ ЧЕЛОВЕКА
  9. Lesson 2. Словообразование (Word Building)
  10. VII Типы словосочетаний по объему
  11. А БАДах ЗАМОЛВИТЕ СЛОВО
  12. А Проголошення ЗУНР 9ноября 1918

Вбудовані функції. Приклад використання

#include<iostream.h>
#include<conio.h>
// оголошення вбудованої функції

inline float dob(int a);

int main()
{

int n=10; float D=1;

for (int k=1; k<=n; k++)

D*=dob(k);

cout<<“D= “<<D;

getch ();return 0;

}

//-------------------------------------

Float dob(int a)

{

float d;

d=(5*a+2)/(a-15);

return d;

}

Результат виконання 28380.5


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

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

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

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

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

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

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

 

#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;

}

 

Передача масивів у функції

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

 

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

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

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

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

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

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

#include <iostream.h>;

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 <iostream.h>

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 <iostream.h>

float max(int n,float a[])

{

float m=a[0];

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

if (m<a[i]) m=a[i];

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 <iostream.h>;

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<n;i++)

z[i]=x[i]>y[i]? x[i]:y[i];

}

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

 


1 | 2 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.008 сек.)