|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Настройка формы. Панель диалога программы с получеными результатами представлена на рисПанель диалога программы с получеными результатами представлена на рис. 9.2.
Рис. 9.2
Текст программы, реализующий поставленную задачу, может иметь следующий вид: ... //--------------------------------------------------------------------------- double a,b,h,y_min,y_max; int n; typedef double (*Tfun)(double); Tfun f; double fun0(double); double fun1(double); double fun2(double); //---------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { Edit1->Text="-3,1416"; // a Edit2->Text="3,1416"; // b Edit3->Text="50"; // n RadioGroup1->ItemIndex = 0; } //----------------- Задать начальные значения ------------------------ void __fastcall TForm1::Button1Click(TObject *Sender) { double x, r; a=StrToFloat(Edit1->Text); b=StrToFloat(Edit2->Text); n=StrToInt(Edit3->Text); h = (b-a)/n; switch(RadioGroup1->ItemIndex) { case 0: f = fun0; break; case 1: f = fun1; break; case 2: f = fun2; break; } y_min = y_max = f(a); for (x = a+h; x<=b; x+=h) { r = f(x); if(y_min>r) y_min = r; if(y_max<r) y_max = r; } } //------------------------ Построить график в Chart ---------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { Chart1->Series[0]->Clear(); // Очистка графика for(double x=a; x<=b; x+=h) Chart1->Series[0]->AddXY(x,f(x)); } //--------------------- Копировать в буфер ---------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { Chart1->CopyToClipboardMetafile(True); } //--------------------- Построить график в Image --------------------------- void __fastcall TForm1::Button4Click(TObject *Sender) { int xmax, ymax, xt, yt, y0, x0; double hx,hy,x; Image1->Canvas->Pen->Color=clBlack; // Установка цвета пера // Поиск координат правого нижнего угла холста Image xmax = Image1->Width; ymax = Image1->Height; // Закрашивание холста Image текущей белой кистью Image1->Canvas->Rectangle(0,0,xmax,ymax); // Поиск середины холста y0=ymax/2; x0=xmax/2; // Вычерчивание координатных линий Image1->Canvas->MoveTo(0,y0); Image1->Canvas->LineTo(xmax,y0); Image1->Canvas->MoveTo(x0,0); Image1->Canvas->LineTo(x0,ymax); Image1->Canvas->Pen->Color=clRed; // Установка цвета пера Image1->Canvas->Pen->Width=2; // Установка ширины пера // Поиск шагов по х и у с масштабированием hx=(b-a)/xmax; hy=(y_max-y_min)/ymax; Image1->Canvas->MoveTo(ceil(x0+a/hx),ceil(y0-f(a)/hy)); for(x=a; x<=b; x+=h) Image1->Canvas->LineTo(ceil(x0+x/hx),ceil(y0-f(x)/hy)); } //------------------------------------------------------------ double fun0(double r) { return sin(r); } //------------------------------------------------------------ double fun1(double r) { return r*r; } //------------------------------------------------------------ double fun2(double r) { return r*r*r; }
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.007 сек.) |