Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет5 Копосова на печать.docx
Скачиваний:
2
Добавлен:
12.09.2019
Размер:
990.71 Кб
Скачать

12

Задание

Используя функцию разработать программу, содержащую: процедуру с открытыми параметрами формирования массива X; процедуру с открытыми параметрами формирования массива Y значений функции начиная с X0 и приращением dX,; процедуру с открытыми параметрами вывода результатов в форме таблицы значений (№, Х, У); процедуру с открытыми параметрами вывода результатов в обратном порядке; процедуры контроля ввода данных;

Задание выполнить с использованием различных операторов повторений в двух вариантах: 1 - для постоянного количества элементов массивов; 2 – для переменного количества элементов массивов.

Алгоритмы нелинейных процедур

Схема алгоритма. Формирование массива Mx

procedure Cr_Mx(Str_Ed, Str_d : string; Var MM: T_Mxy)

Схема алгоритма. Формирование массива My

procedure Cr_My(Mx: T_Mxy; var My: T_Mxy; n: real )

Листинг модуля с открытыми параметрами

unit Koposova_Pr5;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons, ExtCtrls, Pr_func1; // добавлен модуль Pr_func

type

TForm1 = class(TForm)

L_inf1: TLabel; // Назначение программы

LE1: TLabeledEdit; // ввод X,dX,A,n

LE2: TLabeledEdit;

LE3: TLabeledEdit;

LE4: TLabeledEdit;

L_Out: TLabel; //Вывод Y

L_inf3: TLabel; //Инструкция

L_inf4: TLabel; //Инструкция

L_Mx: TLabel;

BTN1: TBitBtn; //Кнопка вычислить

L_My: TLabel;

BTN2: TBitBtn; // Кнопка сброс

L_inf5: TLabel; //вывод результата

procedure FormActivate(Sender: TObject);

procedure LE1KeyPress(Sender: TObject; var Key: Char);

procedure LE2KeyPress(Sender: TObject; var Key: Char);

procedure LE3KeyPress(Sender: TObject; var Key: Char);

procedure LE4KeyPress(Sender: TObject; var Key: Char);

procedure FormClick(Sender: TObject);

procedure BTN2Click(Sender: TObject);

procedure BTN1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

const

inf3='1) Введите числовые значения для A,X,n,dX.' + #10#13 + 'после шелкните по форме.'; //Инструкция

inf4='2) Нажмите кнопку "Вычислить!"'; //инструкция

m = 15; //количество элементов массива

type

T_Mxy = array [0..m]of Real; //тип массива

var A,n:Real;

Mx,My: T_Mxy; // переменная массива

procedure TForm1.FormActivate(Sender: TObject);

const

inf1='Демонстрация вычисления' + #10#13 + 'Y=(A*X^n)-POWER(A-X^n)';

// Инф. сообщ.

inf2='Инструкция'; // инструкция

begin

L_inf1.Caption:= inf1; // Инф.сообщ.

L_inf3.Caption:= inf2; // Инструкция

L_inf4.Caption:= inf3; // Инструкция

L_inf5.Caption:='№'+#9+'X'+#9+'Y'; // названия столбцов вывода резултытов

end;

procedure TForm1.LE1KeyPress(Sender: TObject; var Key: Char);

begin

Inp_Key(Key,LE1.Text); //Вызов процедуры из Pr_func

end;

procedure TForm1.LE2KeyPress(Sender: TObject; var Key: Char);

begin

Inp_Key(Key,LE2.text); //Вызов процедуры из Pr_func

end;

procedure TForm1.LE3KeyPress(Sender: TObject; var Key: Char);

begin

Inp_Key(Key, LE3.Text); //Вызов процедуры из Pr_func

end;

procedure TForm1.LE4KeyPress(Sender: TObject; var Key: Char);

begin

Inp_Key(Key,LE4.Text); //Вызов процедуры из Pr_func

end;

procedure TForm1.FormClick(Sender: TObject);

begin

L_inf4.Caption:= inf4; // инструкция

end;

procedure TForm1.BTN1Click(Sender: TObject);

var i: Byte;

begin

L_Out.Caption:=''; // очистка поля вывода

if LE1.Text=''

then begin

ShowMessage('Введите X!'); //вывод сообщения при пустом поле

Exit

end;

if LE2.Text=''

then begin

ShowMessage('Введите dX!'); //вывод сообщения при пустом поле

Exit

end;

if LE4.Text<>''

then n:= StrToFloat(LE4.Text) //преобразование в число

else begin

ShowMessage('Введите n!'); //вывод сообщения при пустом поле

Exit

end;

if LE3.Text<>''

then A:=StrToFloat(LE3.Text) //преобразование в число

else begin

end;

ShowMessage('Введите A!'); //вывод сообщения при пустом поле

Exit

end;

procedure Cr_Mx(x,dx:integer;Var MM:T_Mx);

var i:integer;

begin

MM[0]:=x;

For i:=1 to High(MM) do

MM[i]:=MM[i-1]+dx;

end;

Procedure Cr_My(a:real;Mx:T_Mx;n:integer;Var MM:T_My);

var i:integer;

begin

for i:=0 to High(MM) do

MM[i]:=Fdy(a,Mx[i],n);

end;

Cr_Mx(LE1.Text,LE2.Text,Mx); //вызов процедуры формирования массива X

Cr_My(Mx,My,A); //вызов процедуры формирования массива Y

for i:= 0 to High(Mx) do //Цикл вывода значений X,Y

L_Out.Caption:=L_Out.Caption + IntToStr(i+1)+#9+

FloatToStrF(Mx[i],ffGeneral,5,3)+#9+

FloatToStrF(My[i],ffGeneral,5,3)+#13;

L_inf4.Caption:='3) Для повтора, нажмите "Сброс!"'; // инструкция

end;

procedure TForm1.BTN2Click(Sender: TObject);

begin

LE1.Text:= ''; //опустошение полей

LE2.Text:= '';

LE3.Text:= '';

LE4.Text:= '';

L_Out.Caption:= '';

L_inf4.Caption:= inf3; //вывод начала инструкции заново

end;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]