Приклади створювання проектів програм із застосуванням функцій користувача
Приклад
1
Обчислити значення виразу
Розв’язок. Усі три доданки заданої формули є схожі один з одним. Тому кожен з них можна записати за допомогою спільної формули: , де a – число, яке у першому доданку дорівнює 6, у другому – 13, а у третьому – 21.
Раціонально є створення функції, параметром якої буде дійсне число a і яка обчислюватиме значення цієї формули. У програмі функцію буде викликано тричі для кожного з доданків: 6, 13, 21.
Фрагмент програми в консольному режимі:
double f(double a)
{ return (sqrt(a)+a)/2; }
void main ()
{ double x=f(6)+f(13)+f(21);
cout<<x;
}
Фрагмент програми застосування функції та її виклику в основній програмі:
double
f(double a)
{ return (sqrt(a)+a)/2; }
void __fastcall TForm1::Button1Click(TObject *Sender)
{ double x=f(6)+f(13)+f(21);
Edit1->Text=FormatFloat("0.00", x);
}
Приклад
2.
Обчислити значення виразу
Розв’язок. У формулі чотири рази факторіал. Тому доречно обчислити значення факторіалу у функції і викликати його відповідно чотири рази для різних параметрів.
Фрагмент програми в консольному режимі:
long fact(int n)
{ long c=1;
for(int i=1; i<=n; i++) c*=i;
return c; }
void main()
{
double z=(2.0*fact(5)+3*fact(8))/(fact(6)+fact(4));
cout<<z;
}
Фрагмент програми застосування функції та її виклику в основній програмі:
long fact(int n)
{ long c=1;
for(int i=1; i<=n; i++) c*=i;
return c; }
void __fastcall TForm1::Button1Click(TObject *Sender)
{ double z=(2.0*fact(5)+3*fact(8))/(fact(6)+fact(4));
Edit1->Text=FloatToStr(z); }
Приклад 3 Знайти периметр трикутника, заданого координатами вершин.
Розв’язок. Для обчислення довжини сторони трикутника доцільно створити функцію і викликати її тричі для кожної зі сторін. Ця функція обчислюватиме довжини відрізку, заданого координатами точок, які він з’єднує, за формулою
Функція segment() має чотири параметри – координати обох кінців відрізка.
Результат функції – дійсне число (довжина відрізка).
Фрагмент програми в консольному режимі:
double segment(double x1,double y1,double x2,double y2)
{ return sqrt(pow(x2-x1,2)+pow(y2-y1,2));
}
void main()
{ double x1, y1, x2, y2, x3, y3, P;
cout<<"Перша вершина:\n";
cin>>x1; cin>>y1;
cout<<"Друга вершина:\n";
cin>>x2; cin>>y2;
cout<<"Третя вершина:\n";
cin>>x3; cin>>y3;
P=segment(x1,y1,x2,y2)+segment(x2,y2,x3,y3)+segment(x1,y1,x3,y3);
cout<<"Периметр дорівнює: "<<P<<endl;
}
Приклад 4 Написати три функції для обчислення периметра трикутника, чотирикутника й п'ятикутника відповідно.
Розв'язок. Завдання відрізняється від попереднього тим, що тип параметрів є однаковий, а кількість параметрів – різна. При викликанні функції обиратиметься той варіант, для якого збігається кількість фактичних і формальних параметрів.
Тексти функції та її виклику в основній програмі:
//Визначення всіх потрібних версій функції
//Версія функції для трикутника
int Perimetr(int Len1, int Len2, int Len3)
{ return Len1 + Len2 + Len3; }
//Версія функції для чотирикутника
int Perimetr(int Len1, intLen2, int Len3, int Len4)
{ return Len1 + Len2 + Len3 + Len4; }
//Версія функції для п 'ятикутника
int Perimetr(int Len1, int Len2, int Len3, int Len4, int Len5)
{ return Len1 + Len2 + Len3 + Len4 + Len5; }
int main()
{ int AB = 5, BC = 3, CA = 7;
int CD = 8, DA = 11, DE = 2, EA = 9;
cout << "Perimetr ABC = " << Perimetr(AB, BC, CA) << "\n";
cout << "Perimetr ABCD = " << Perimetr(AB,BC,CD,DA) << "\n";
cout << "Perimetr ABCDE = " << Perimetr(AB, BC, CD, DE, EA);
getch();
}
