Vondarto
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Прошу помощи! Задача - написать программу расчета выбранной функции Y(x), или S(x) (желательно и |Y(x)–S(x)|), вид которой в свою очередь передается в качестве параметра в функцию вывода (Out_Rez). С горем пополам написал код Но тем не менее выдаёт ошибку при линковке Код: //--------------------------------------------------------------------------- #include <vcl.h> #include "math.h" #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; #include "math.h" //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //------------ Декларация типа указателя на функции ------------------------- typedef double (*TFun)(double,double); //------------Декларации прототипов функций Пользователя --------------- double fun1(double,double); double fun2(double,double); double fun3(double,double); void Out_Rez(TFun, double, double, double, double, TMemo*); //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { Edit1->Text="0,1"; Edit2->Text="1"; Edit3->Text="10"; Edit4->Text="0,2"; Memo1->Clear(); Memo2->Clear(); Memo3->Clear(); RadioGroup1->ItemIndex=0; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { double a, b, x, h, r, s, y, d; int n,k; a = StrToFloat(Edit1->Text); b = StrToFloat(Edit2->Text); n = StrToInt(Edit3->Text); h = StrToFloat(Edit4->Text); switch(RadioGroup1->ItemIndex) { case 0: Out_Rez (fun1,a,b,n,h,Memo1); break; case 1: Out_Rez (fun2,a,b,n,h,Memo2); break; case 2: Out_Rez (fun3,a,b,n,h,Memo3); break; } } //---------- Реализации функций Пользователя --------------------------------- double fun1(double x){ return ((1+pow(x,2))/2)*atan(x)-x/2; } double fun2(double s) { double a, b, h, r, y, x; int n, zn = -1, k; for(x = a; x<=b; x+=h) r = s = 1; for(k = 1; k<=n; k++) { r = zn*r*x/k; s+=r; } return s; } double fun3(double y, double s) { double d; d=fabs(y-s); return d; } void Out_Rez (TFun f,double xn,double xk,double h,TMemo *mem) { double s,d; for(double x=xn; x<=xk; x+=h) mem->Lines->Add("y= "+FloatToStrF(x,ffFixed,8,5)+ "s= "+FloatToStrF(s,ffFixed,8,5)+ "|y-s|= "+FloatToStrF(d,ffFixed,8,5)); } | Буду признателен,если устраните ошибочку и программа наконец заработает! |