Структурная схема процедуры расчета матриц
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.
Указанная программа не была оптимизирована, т.к. нет существенных мест оптимизации.
В контрольной добавлены снимки работающего приложения и блок-схема процедуры расчета.
