Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
М_Отчёт.doc
Скачиваний:
4
Добавлен:
06.05.2019
Размер:
390.66 Кб
Скачать

Приложение 2. Листинг модуля

unit Unit1;

{Вычислить n значений выражения Y = X/(X-5) начиная с X с шагом dX.

Вывести значения X и Y}

interface

uses

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

Dialogs, StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)

L_Info: TLabel; //Для информационного сообщения

LE_n: TLabeledEdit; //Для n

LE_X: TLabeledEdit; //Для X

LE_dX: TLabeledEdit; //Для dX

Button1: TButton;

L_Out: TLabel; //Для вывода X, Y

procedure FormActivate(Sender: TObject); //Вывод информационного сообщения

//Контроль ввода n

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

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

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

procedure Button1Click(Sender: TObject);

end;

var Form1: TForm1;

implementation

{$R *.dfm}

Var n, X, dX: Integer;

//Вывод информационного сообщения

procedure TForm1.FormActivate(Sender: TObject);

begin

L_Info.Caption:= 'Вычисление n значений Y = X/(X-5) от X c шагом dX';

end;

//Контроль ввода n

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

//Проверка соответствия вводимого символа алфавиту целых чисел

// Key - вводимый символ

begin

If not (Key in ['0'..'9', '-', #8])

//несоответствие Key алфавиту вещественных чисел, #8 - <Backspace>

then key := #0 ; //подмена недопустимого Key пустым значением

end;

//Контроль ввода X

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

begin

If not (Key in ['0'..'9', '-', #8])

then key := #0 ;

end;

//Контроль ввода dX

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

begin

If not (Key in ['0'..'9', '-', #8])

then key := #0 ;

end;

//Преобразование строка-число

Procedure Inp_Int(LE: TLabeledEdit; var V, Flag: Integer);

{LE - поле ввода переменной, тип - TLabeledEdit;

значение LE.Text будет преобразовано в переменную V целого типа;

Flag=1 - сигнал об ошибке преобразования, если Flag не определён, то ошибки нет }

Var Cod : Integer; //код ошибки преобразования, при Cod=0 - успешное преобразование

begin

Val(LE.Text, V, Cod); //Преобразование строка-число

If Cod <> 0 //ошибка преобразования

then begin //сообщение об ошибке

ShowMessage('Поле ' + LE.EditLabel.Caption + ' ?????');

Flag:= 1;

end;

end;

//Вычисления и вывод результатов

Procedure Out(L: TLabel; n, X, dX: Integer);

//Вычисление и вывод X, Y; L: TLabel - куда выводить

Var I: Byte; //счётчик цикла

Y: Real;

begin

L.Caption := ' '; //очистка метки вывода

L.Caption := ' X Y' + #10#13 ; //заголовок вывода

For I:= 1 to n do

begin

If X <> 5 //Х =0 - деление на 0

then begin

Y:= X/(X - 5); //вывод X, Y

L.Caption := L.Caption + IntToStr(X) + ' ' +

FloatToStrF(Y, ffGeneral, 2, 5)+ #10#13;

end

//вывод X и сообщения о делении на 0

else L.Caption := L.Caption + IntToStr(X) + ' Деление на 0'+ #10#13;

X:= X + dX;

end;

end;

// преобразование, вычисление и вывод

procedure TForm1.Button1Click(Sender: TObject);

var Flag: Integer;

begin

Inp_Int(LE_n, n, Flag); // преобразование в число n, X, dX

Inp_Int(LE_X, X, Flag);

Inp_Int(LE_dX, dX, Flag);

If Flag = 1 //в одной из Inp_Int ошибка преобоазования, досрочное завершение

then exit;

Out(L_Out, n, X, dX); //вывод X, Y

end;

end.

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