русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Завдання


Дата додавання: 2014-11-28; переглядів: 835.


1. Набрати та відладити програму .

2. Проаналізувати програму.

3. Написати коментарі до програм.

4. Відповісти на контрольні запитання.

 

Приклад 1.

Обрахуйте наближене значення інтегралів за допомогою формули прямокутників, задавши предели інтегрування [a, b] і число інтервалів розбиття і .

#include "stdafx.h"

#include <iostream>

using namespace std;

//Объявление (прототипи) функції:

/*функция rectangle() повертає значення типу double, її параметри:*/

/*pf–показник на функцію з параметрами типу double, якій повертає значення double*/

/*a, b – межі інтегрування, величини типу double*/

double rectangle(double(*pf)(double), double a, double b);

 

/*функція ratio() повертає значення типу double, її параметр типу double*/

double ratio(double x);

 

/*функция cos4_2()повертає значення типу double, її параметр типу double*/

double cos4_2(double v);

 

int _tmain(int argc, _TCHAR* argv[]){

double a,b,c;

printf("\n Введіть значення межі інтегрування:");

printf("\na= ");

scanf("%lf",&a);

printf("\nb= ");

scanf("%lf",&b);

c=rectangle(ratio,a,b);

printf("Першій інтеграл = %f\n",c);

printf("Другій інтеграл = %f\n",rectangle(cos4_2,a,b));

system("pause");

return 0;

}

 

double rectangle(double(*pf)(double), double a, double b){

/*Обрахування визначного інтегралу за допомогою формули прямокутників*/

 

int N, i;

double h,s=0.0;

printf("\n Введіть кількість інтервалів розбиття : N= ");

scanf("%d",&N);

printf("\na= ");

h=(b-a)/N; //Довжина інтервалу розбиття

for (i=0;i<N;i++)

s+=pf(a+h/2+i*h);

return h*s;

}

 

double ratio(double x) { //Підінтегральна функція

double z; //Допоміжна змінна

z=x*x+1;

return x/(z*z);

}

 

double cos4_2(double v){ // Підінтегральна функція

double w; // Допоміжна змінна

w=cos(v);

return 4*w*w;

}

 

Приклад 2.

 

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

#include "stdafx.h"

#include <iostream>

using namespace std;

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

void f1(); //оголошення (прототип)функції f1

void f2(); // оголошення (прототип)функції f2

 

int _tmain(int argc, _TCHAR* argv[]) {

void (*ptr)(); //ptr – показник на функцію

f2(); //явний виклик функції f2

ptr=f2;//показчику привласнюється адреса функції f2

(*ptr)();

//виклик функції f2 по її адресі з розіменуванням показника

ptr=f1;//показнику привласнюється адреса функції f1

(*ptr)();

// виклік функції f1 по її адресі з розіменуванням показника

ptr(); // виклик функції f1 без розіменуванням показника

system("pause");

return 0;

}

//опис функції f1 и f2

void f1() {

cout << "Виконується f1\n";

}

void f2() {

cout << "виконується f2\n";

}

Контрольні запитання

1. Чому заборонені арифметичні операції над покажчиками на функції?

2. Чому в описі покажчика на функцію необхідні круглі дужки при імені покажчика?

3. Чи може функція повертати значення типа покажчик? Якщо так, то як оголошується прототип такої функції?

4. Чи можуть параметрами функції бути покажчики на об'єкти? Якщо так, то як відбувається передача фактичних параметрів при виклику функції?

5. Чи можуть параметрами функції бути покажчики на функції? Якщо так, то як відбувається передача фактичних параметрів при виклику функції?

 


<== попередня лекція | наступна лекція ==>
Теоретичні відомості | Приклад програми


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн