Pm= fact(m); Pm= fact(n); //виклик функції
cout<<”\n\nПерестановки: Pm=”<<Pm<<” Pn=”<<Pn;
Cmn= fact(m)/ fact(n)/ fact(m-n); //увага: Cm0=1
cout<<”\nСполучень: Cmn=”<< Cmn;
Amn= Pm/fact(m-n); //увага: Amm=m!
cout<<”\nРозміщень: Amn=”<<Amn;
cout<<”\nПеревірка: Amn=Cmn*Pn: ”;
double k=(Amn-Cmn*Pn)/Amn*100;
cout<<”Помилка=”<<k<<”%”;
cout<<\n кінець задачі “;
return 0;}
РЕЗУЛЬТАТ ВИКОНАНННЯ ПРОГРАМИ
Змінні m та n у програмі не обов’язкові, тому що застосовані глобальні оголошення в roll.h. Змінна k оголошена як double для того, щоб після розрахунку розміщень оцінити відносну помилку: k=(Amn-Cmn*Pn)/Amn*100
Застосування k – цілої змінної привело б до автоматичного округлення шляхом відкидання дробової частини числа.
Аргумент функції може бути задані арифметичним виразом (див. виклик fact(m-n))
Результат помилки (k=0%) – на рівні точності чисел типу double.
У будь-який програмі ділення на 0 заборонено, тому що зупиняється виконання програми і комп’ютер вказує на цю помилку.
У нашому випадку ділення на 0 виключається, тому що функція fact ніколи не повертає 0.
|
|
Оформимо аналогічно й програму grad – вивід на екран значення кута. Ця функція здійснює дію, але нічого не повертає, тому їй присвоюється тип void (порожній). Аргументи функції: кут (double) та мітка (char).
Таким чином, прототип має вигляд: void grad (double, char);
Виклик функції: grad (а, ‘g’);
Для переводу рад. у град. У функції grad застосована глобальна константа С_ із roll.h. Функція записана у файлі SUBPROG\ grad.cpp, прототип та опис включені в SUBPROG\roll.h.
// файл PART1\1_24.cpp
//Приклад виклику бібл.. функції grad
#include “c:\CPP\SUBPROG\\roll.h”
main() {
cout<<”\nПриклад виклику бібл.. функції grad”;
double a=-6.5;; cout<<”\n”<<a<<” рад. \n”;
grad(a, ‘g’); cout<<” град. \n”;
grad(a, ‘c’); cout<<” сек. \n”;
grad(a, ‘3’); cout<<” період, град., мин., сек. ”;
cout<<”\n кінець задачі ”;
return 0;}