Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KR 0201.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
145.92 Кб
Скачать

Структурная схема процедуры расчета матриц

sum := sum + StrToFloat(SGrid.Cells[x, y])

да

sum := sum + StrToFloat(SGrid.Cells[x+1,y])

да

да

Flag=false

да

нет

sum:=sum/((xk+2)*(yk + 1))

да

нет

да

нет

Вывод

результата

Вывод

результата

Вывод

результата

Вывод

результата

ПРИЛОЖЕНИЕ

Листинг программы

unit Task5;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids;

type

TForm5 = class(TForm)

StringGrid1: TStringGrid;

StringGrid2: TStringGrid;

ButtonRun: TButton;

ButtonClear: TButton;

ButtonClose: TButton;

StringGrid3: TStringGrid;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

procedure FormCreate(Sender: TObject);

procedure Ras(SGrid: TStringGrid);

procedure ButtonRunClick(Sender: TObject);

procedure ButtonClearClick(Sender: TObject);

procedure ButtonCloseClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form5: TForm5;

implementation

{$R *.dfm}

procedure TForm5.FormCreate(Sender: TObject);

begin

StringGrid3.Cells[0,0]:=' Матрица';

StringGrid3.Cells[1,0]:='Элементы';

StringGrid3.Cells[2,0]:='Результат';

StringGrid3.Cells[0,1]:='3х4';

StringGrid3.Cells[0,2]:='2х3';

end;

procedure TForm5.Ras(SGrid: TStringGrid);

var x, xk :integer;

y, yk :integer;

sum :real;

flag : boolean;

begin

flag := true;

xk:= SGrid.ColCount-2;

yk:= SGrid.RowCount-1;

sum := 0;

for x:= 0 to xk do

for y:= 0 to yk do

begin

if x = 0 then sum := sum + StrToFloat(SGrid.Cells[x, y]);

sum := sum + StrToFloat(SGrid.Cells[x + 1, y]);

if flag = true then

if SGrid.Cells[x, y] <> SGrid.Cells[x + 1, y] then flag := false;

end;

if flag = false then

begin

sum := sum /((xk + 2)*(yk + 1));

if SGrid = StringGrid1 then

begin

StringGrid3.Cells[1,1] :='не равны';

StringGrid3.Cells[2,1] := FloatToStrF(sum, ffFixed, 8,3);

end

else

begin

StringGrid3.Cells[1,2] :='не равны';

StringGrid3.Cells[2,2] := FloatToStrF(sum, ffFixed, 8,3);

end;

end

else

if SGrid = StringGrid1 then

begin

StringGrid3.Cells[1,1] :='равны';

StringGrid3.Cells[2,1] := FloatToStr(sum);

end

else

begin

StringGrid3.Cells[1,2] :='равны';

StringGrid3.Cells[2,2] := FloatToStr(sum);

end;

end;

procedure TForm5.ButtonRunClick(Sender: TObject);

begin

Ras(StringGrid1);

Ras(StringGrid2);

end;

procedure TForm5.ButtonClearClick(Sender: TObject);

var x,y :integer;

begin

for x:= 1 to StringGrid3.ColCount-1 do

for y:= 1 to StringGrid3.RowCount-1 do

StringGrid3.Cells[x,y]:='';

end;

procedure TForm5.ButtonCloseClick(Sender: TObject);

begin

Form5.Close;

end;

end.

ЗАКЛЮЧЕНИЕ

В данной контрольной работе представлена структурная схема блока расчета матриц и листинг программы, в соответствии с заданием к варианту №30.

Указанная программа не была оптимизирована, т.к. нет существенных мест оптимизации.

В контрольной добавлены снимки работающего приложения и блок-схема процедуры расчета.

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