Главное меню

Карта сайта
Главная
Курсовые работы
Отчеты по практикам
Лабораторные работы
Методические пособия
Рефераты
Дипломы
Лекции



Путевые машины

ПРИЛОЖЕНИЕ

{ головной модуль программы - обеспечивает

ввод, вывод и проверку данных }

unit Srez;

interface { интерфейсная часть модуля }

uses

{ стандартные модули подключаются автоматически }

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics,

Controls, Forms, Dialogs, StdCtrls, ExtCtrls,

{ вычислительный модуль}

Srezcalc;

{ описание главной формы приложения - генерируется

автоматически }

type

TForml = class(TForm)

Edith TEdit; { строки ввода }

Edit2: TEdit;

Edit3: TEdit;

Button1: TButton;

{ кнопка запуска вычислений }

PaintBux1: TPaintBox;

{ поле для вывода результатов в виде графика }

Labell: 'TLabel;

{пояснительные надписи}

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

{ объявление процедуры обработки нажатия на кнопку запуска вычислений }

procedure Button 1Click(Sender: TObject);

private

{ внутренние процедуры и переменные класса - нет}

public

{ внешние процедуры и переменные класса - нет }

end;

var

Form 1: TForml;

implementation

{$R *.DFM} { подключение файла ресурсов }

procedure TForml.Button l CIick(Sender: TObject);

{ определение служебных переменных }

Var i: integer;

buffer.real;

begin

{ преобразование текстовых строк в числа }

try { защищенный от сбоев фрагмент программы } p:=StrToFloat(Editl.Text);

n:=StrToFloal(Kdit2.Text);

l:=StrToFloat(Edit3.Text);

except { обработка исключительных ситуаций }

on EConvertError do { действия в случае ошибки ввода }

begin

ShowMessage('Bведены не числа');

{ вывод сообщения об ошибке }

exit; { возврат управления системе }

end;

end;

{ проверка корректности исходных данных }

if not CheckN(p.n.l) then

begin

ShowMessage('He выполнено условие п<l);

exit;

end;

if not Checkp(p,n,l) then

begin

S!iowMessage('He выполнено условие р<(1-1)');

exit;

end;

{ подготовка графического объекта к рисованию}

with PaintBoxl.Canvas do

begin

FillRect(ClipRect); { очистка поля рисования } Pen.Color:=clRed; { установка цвета пера } MoveTo(0,0); { установка пера в левый

верхний угол поля}

end;

{ очистка поля вывода текста }

ListBoxl. Clear;

{ основной цикл вычислений}

for i:=l to 4 do

begin

buffer:=MainCalc(p,n,l,i);

{ вывод результата в цифровом виде }

LisiBoxl.Items.Add(FloatToStr(buffer));

{ рисование линии }

with PaintBoxl.Canvas do

begin

lineto((i-1 )*50,trunc(buffer/50));

ellipse((i-l)*50,tranc(buffer/50),

(i-l)*50-l+4,trunc(buifer/50)4+4);

end;

end;

end;

end.

unit SrezCalc;

interface { интерфейсная часть модуля }

const { объявления констант и переменных, доступных из других модулей }

Bo:array[1..4] of real = (700,1400,1600,1700); { mm }

S= 1546; {mm}

D= 1487; { mm }

K2= 2.5; { mm/m2 }

K3=180; {mm}

Sp= 1530; {mm}

QW=25; {mm} { QW=Q+W }

var { определения переменных }

p,n,l:real;

function CheckP(p,n,l:rea!):boolean;

{ функция проверки входных данных }

function CheckN(p,n,l:real):boolean;

{ функция проверки входных данных }

function MainCalc(p,n,l:real;i:integer):real;

{ главная расчетная функция }

implementation { реализация объявленных функций } function CheckN(p.n,l:real):boolean;

begin

CheckN:=(n<l);

end;

function CheckP(p,n,l:real):boolean;

begin

CheckP:=(p<(l-l));

end;

function MainCalc(p,n,I:real;i:integer):real;

var Kl,a,Eb:real; { локальные переменные }

begin

Kl:=0.625*p*p;

a:=K2*(l-n)*n+Kl-K3;

if a<=0 then Eb:=0.5*(Sp-D)+QW { проверка условия }

else Eb:=0.5*(S D)+QW+a;

MainCalc:=2*(Bo[i]-Eb);

end;

end.



 
независимая экспертиза после пожара