Пример выполнения задания. Написать программу вычисления выбранной функции, вид которой в свою очередь передается в качестве параметра в функцию вывода (Out_Rez)

Написать программу вычисления выбранной функции, вид которой в свою очередь передается в качестве параметра в функцию вывода (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));

}

Результат выполнения программы:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: