В общем вот условие задачи:
12. В прямоугольной матрице в каждой строке оставить без изменения минимальный и максимальный элементы строки. Остальные элементы строк заменить нулями.
В SG генерируется матрица 4 на 5, а по нажатию на SpeedButton алгоритм правильно не отрабатывает и в едиты и SG выводит какую то ху***. Помогите исправить.
Массивы MIN и MAX нужны для записи в них минимальных и максимальных значений.
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | var
Form1: TForm1;
M: array [ 0..3 , 0..4 ] of Integer ;
i,j : Integer ;
implementation
{$R *.dfm}
procedure TForm1 . FormCreate(Sender: TObject);
begin
for i:= 0 to 3 do
for j:= 0 to 4 do
begin
Randomize;
M[i,j]:=Random( 15 );
SG . Cells[j,i]:=IntToStr(M[i,j]);
end ;
end ;
procedure TForm1 . SpeedButton1Click(Sender: TObject);
var MIN: array [ 0..3 ] of Integer ;
MAX: array [ 0..3 ] of Integer ;
ACol,ARow : Integer ;
begin
for i:= 0 to 3 do
for j:= 0 to 4 do
begin
if M[i,j]<M[i,j+ 1 ] then
MIN[j]:=M[i,j];
if M[i,j]>M[i,j+ 1 ] then
MAX[j]:=M[i,j];
end ;
for ACol:= 0 to 4 do
for ARow:= 0 to 3 do
begin
if (StrToInt(SG . Cells[Acol,ARow])<>MIN[ACol]) or (StrToInt(SG . Cells[Acol,ARow])<>MAX[ACol]) then
SG . Cells[Acol,ARow]:= '0' ;
end ;
Edit1 . Text:=IntTostr(MAX[ 0 ])+ ',' +inttostr(MAX[ 1 ])+ ',' +inttostr(MAX[ 2 ])+ ',' +inttostr(MAX[ 3 ]);
Edit2 . Text:=IntTostr(MIN[ 0 ])+ ',' +inttostr(MIN[ 1 ])+ ',' +inttostr(MIN[ 2 ])+ ',' +inttostr(MIN[ 3 ]);
end ;
|