Изучение Delphi. Графическая схема алгоритма, страница 2

Кодпроцедурыобработкисобытия:

procedure TForm1.Edit1Change(Sender: TObject);

const

Max=10;

var

i,n:integer;

begin

try

n:=StrToInt(Edit1.Text);

if Max<n then

begin

Button1.Visible:=False;

StringGrid1.Visible:=False;

Label2.Visible:=False;

Label3.Visible:=False;

Label4.Visible:=False;

Label5.Visible:=False;

Edit2.Visible:=False;

Edit3.Visible:=False;

ShowMessage('Максиальное количество строк равно 10!');

end

else

begin

Button1.Visible:=False;

StringGrid1.Visible:=False;

Label2.Visible:=True;

Label3.Visible:=False;

Label4.Visible:=False;

Label5.Visible:=False;

Edit2.Visible:=True;

Edit3.Visible:=False;

StringGrid1.RowCount:=n+1;

for i:=1 to n do

StringGrid1.Cells[0,i]:=IntToStr(i);

end;

except ShowMessage('Ошибка!');

end;

end;

procedure TForm1.Edit2Change(Sender: TObject);

const

Max=10;

var

j,m:integer;

begin

try

m:=StrToInt(Edit2.Text);

if Max<m then

begin

Button1.Visible:=False;

StringGrid1.Visible:=False;

Label2.Visible:=True;;

Label3.Visible:=False;

Label4.Visible:=False;

Label5.Visible:=False;

Edit2.Visible:=True;

Edit3.Visible:=False;

ShowMessage('Максиальное количество столбцов равно 10!');

end

else

begin

Button1.Visible:=False;

StringGrid1.Visible:=False;

Label2.Visible:=True;

Label3.Visible:=True;

Label4.Visible:=False;

Label5.Visible:=False;

Edit2.Visible:=True;

Edit3.Visible:=True;

StringGrid1.ColCount:=m+1;

for j:=1 to m do

StringGrid1.Cells[j,0]:=IntToStr(j);

end;

except ShowMessage('Ошибка!');

end;

end;

procedure TForm1.Edit3Change(Sender: TObject);

begin

try

Button1.Visible:=True;

Label4.Visible:=True;

StringGrid1.Visible:=True;

except ShowMessage('Ошибка!');

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

const

Max=10;

var

i,j,n,m,K:integer;

B,S:real;

X:array[1..Max,1..Max] of real;

begin

try

n:=StrToInt(Edit1.Text);

m:=StrToInt(Edit2.Text);

B:=StrToFloat(Edit3.Text);

for i:=1 to n do

for j:=1 to m do

X[i,j]:=StrToFloat(StringGrid1.Cells[j,i]);

K:=0;

S:=0;

for i:=1 to n do

begin

j:=3;

While j<=m do

begin

if X[i,j]<B then

begin

S:=S+X[i,j];

K:=1;

end;

j:=j+3;

end;

end;

if K=0 then

begin

Label5.Visible:=False;

ShowMessage('В матрице нет таких элементов!');

end

else

begin

Label5.Visible:=True;

Label5.Caption:='Сумма элементов матрицы размера '+IntToStr(n)+'x'+IntToStr(m)+', меньших '+FloatToStr(B)+' и расположенных в столбцах с номерами кратными 3'+' равна '+FloatToStr(S);

end;

except ShowMessage('Ошибка!');

end;

end;

Окно программы:

Тестовые наборы:

n

m

B

Матрица

Результат

9

9

4

1 1 1 2 2 2 3 3 3

1 1 1 2 2 2 3 3 3

1 1 1 2 2 2 3 3 3

1 1 1 2 2 2 3 3 3

1 1 1 2 2 2 3 3 3

1 1 1 2 2 2 3 3 3

1 1 1 2 2 2 3 3 3

1 1 1 2 2 2 3 3 3

1 1 1 2 2 2 3 3 3

Сумма элементов матрицы размера 9x9, меньших 4 и расположенных в столбцах с номерами кратными 3 равна 54

6

6

7

1 2 3 4 5 6

1 2 3 4 5 6

1 2 3 4 5 6

1 2 3 4 5 6

1 2 3 4 5 6

1 2 3 4 5 6

Сумма элементов матрицы размера 6x6, меньших 7 и расположенных в столбцах с номерами кратными 3 равна 54

3

3

3

1 2 2

1 2-1

1 2 3

Сумма элементов матрицы размера 3x3, меньших 3 и расположенных в столбцах с номерами кратными 3 равна 1

Вывод:  Приобрели навыки разработки алгоритмов и программ с использованием двумерных    массивов.