Размещение компонентов на Форме




Вместо компонента Edit используем компонент SpinEdit, который обеспечивает отображение и редактирование целого числа с возможностью его изменения посредством двойной кнопки.

 
 
Рис. 3.1

 


Компонент SpinEdit находится на странице Samples Палитры Компонентов. В тех случаях, когда объем выводимой информации превышает размер поля компонента Memo, целесообразно снабдить его линейками прокрутки. В свойстве ScrollBars компонента Memo1 установим значение ssVertical – появится вертикальная линейка прокрутки. Присвоим модулю имя UnCiklAlg.

 

Текст модуля

 

#include “math.h”

 

Form1: TForm1;

 

 

long fakt(int n) //функция вычисления фактариала числа n

{

double t=1;

if(n<1) return 1;

else

for(int i=1; i<n; i++)

t=t*(i+1);

return t;

}

 

void __fastcall TForm1::FormCreate(TObject *Sender)

{

СSpinEdit1->Text= ''3''; // начальное значение N

Edit1->Text= ''0,1''; // начальное значение Xn

Edit2->Text= ''2,0''; // начальное значение Xk

Memo1->Clear;

Memo1->Lines->Add(''Лабораторная работа №3 - Циклический алгоритм'');

}

void __fastcall TForm1::Button1Click(TObject *Sender)

{

double xn,xk,x,h,s,y,al,del;

int n,k;

n = StrToInt(CSpinEdit1->Text);

xn = StrToFloat(Edit1->Text);

xk = StrToFloat(Edit2->Text);

 

if (CheckBox1->Checked)

Memo1->Lines->Add('' Исходные данные: n='' +IntToStr(n)+

'' Xn= ''+FloatToStrF(xn,ffFixed,6,1)+

'' Xk= ''+FloatToStrF(xk,ffFixed,6,1));

h=(xk-xn)*0.1; // шаг h

x=xn;

do

{ // цикл по x

 

s=1;

for (k=1; k<n; k++)

{

s=s+pow(-1,k)*((2*k*k+1)/fakt(2*k))*pow(x,2*k);

 

}

y=(1-x*x*0.5)*cos(x)-0.5*x*sin(x);

if (CheckBox2->Checked)

if (CheckBox3->Checked )

{

al=s-y; // абсолютная погрешность

del=abs((s-y)/y)*100; // относительная погрешность

Memo1->Lines->Add('' x= '' +FloatToStrF(x,ffFixed,6,2)+

'' S= ''+ FloatToStrF(s,ffFixed,6,3)+

'' Y= ''+ FloatToStrF(y,ffFixed,6,3)+

'' A= ''+ FloatToStrF(al,ffFixed,6,3)+

'' D= ''+ FloatToStrF(del,ffFixed,6,0)+'' %'');

}

Else

{

al=s-y;

Memo1->Lines->Add('' x='' +FloatToStrF(x,ffFixed,6,2)+

'' S='' + FloatToStrF(s,ffFixed,6,3)+

'' Y='' + FloatToStrF(y,ffFixed,6,3)+

'' A='' + FloatToStrF(al,ffFixed,6,3));

}

Else

if (CheckBox3->Checked)

{

del=abs((s-y)/y)*100;

Memo1->Lines->Add('' x='' +FloatToStrF(x,ffFixed,6,2)+

'' S='' + FloatToStrF(s,ffFixed,6,3)+

'' Y='' + FloatToStrF(y,ffFixed,6,3)+

'' D='' + FloatToStrF(del,ffFixed,6,0)+'' %'');

}

Else

Memo1->Lines->Add('' x='' +FloatToStrF(x,ffFixed,6,2)+

'' S='' + FloatToStrF(s,ffFixed,6,3)+

'' Y='' + FloatToStrF(y,ffFixed,6,3));

x=x+h;

}

while (x<xk);

}

}

Выполнение индивидуального задания

По указанию преподавателя выберите свое индивидуальное задание. Создайте приложение и протестируйте его работу.

Индивидуальные задания

В заданиях с №1 по №15 необходимо вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) для значений x от до с шагом . Близость значений S(x) и Y(x) во всем диапазоне значений x указывает на правильность вычисления S(x) и Y(x).

 

S(x) n Y(x)
    0.1      
    0.1    
    0.1    
    0.1      
    0.1    
    0.1    
    0.1    
    0.1      
    0.1    
    0.1   0.5    
    0.1   0.8    
    0.1      

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-12-31 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: