Написать программу вычисления выбранной функции, вид которой в свою очередь передается в качестве параметра в функцию вывода (Out _ Rez).
4.2.1. Создание оконного приложения
Панель диалога с полученными результатами представлена на рис. 4.1, а текст программы может иметь следующий вид:
...
#include <math.h>
//------------Декларации прототипов функций Пользователя ---------------
double fun1(double);
double fun2(double);
void Out_Rez(int, double, double, double);
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit1->Text="0,1";
Edit2->Text="3";
Edit3->Text="0,3";
Memo1->Clear();
Memo2->Clear();
RadioGroup1->ItemIndex = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double a, b, h;
a = StrToFloat(Edit1->Text);
b = StrToFloat(Edit2->Text);
h = StrToFloat(Edit3->Text);
Out_Rez (RadioGroup1->ItemIndex, a, b, h);
}
//---------- Реализации функций Пользователя ---------------------------------
double fun1(double r)
{
return 2*exp(r*r);
}
//---------------------------------------------------------------------------
double fun2(double r)
{
return pow(sin(r), 2);
}
Рис. 4.1
//---------------------------------------------------------------------------
void Out_Rez (int kod, double xn,double xk,double h)
|
|
{
double (*fun)(double); // Декларация указателя на функцию
TMemo *mem;
switch(kod) {
case 0:
fun = fun1;
mem = Form1->Memo1;
break;
case 1:
fun = fun2;
mem = Form1->Memo2;
break;
}
for(double x=xn; x<=xk; x+=h)
mem->Lines->Add(" x = " + FloatToStrF(x,ffFixed,8,2) +
" y = " + FloatToStrF(fun(x),ffFixed,8,4));
}
4.2.2. Создание консольного приложения
Текст программы может выглядеть следующим образом:
...
#include<stdio.h>
#include<conio.h>
#include<math.h>
//------------------- Декларации прототипов функций -------------------------
double fun1(double);
double fun2(double);
void Out_Rez (int, double, double, double);
//-----------------------------------------------------------------------------------------
void main()
{
double a, b, h;
puts("Input a, b, h");
scanf("%lf%lf%lf", &a, &b, &h);
puts("\n\t Function - 2*exp(x)");
Out_Rez (1,a,b,h);
puts("\n\t Function - sin(x)*sin(x)");
Out_Rez (2,a,b,h);
puts("\n Press any key... ");
getch();
}
//---------- Реализации функций пользователя ---------------------------------
double fun1(double r)
{
return 2*exp(r*r);
}
//-----------------------------------------------------------------------------------------
double fun2(double r)
{
return pow(sin(r), 2);
}
//-----------------------------------------------------------------------------------------
void Out_Rez (int kod, double xn, double xk, double h)
{
double (*fun)(double); // Декларация указателя на функцию
switch(kod) {
case 1:
fun = fun1;
break;
case 2:
fun = fun2;
break;
}
for(double x=xn; x<=xk; x+=h)
printf(" x = %5.2lf \t y = %8.4lf\n", x, fun(x));
}
Результат выполнения программы: