Задание такое:
В матрице С [5 х 5] найти строку и столбец, в которых находится минимальный элемент, и заменить элементы этой строки на элементы этого столбца.
Не получается вывести номер строки и столбца где находится минимальный элемент и не могу вывести новую матрицу, где заменяются элементы строки элементами столбца
Код:
Код:
unit Lab_8;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls;
type
Tmatr = array of array of integer;
TForm1 = class(TForm)
Image1: TImage;
Memo1: TMemo;
Memo2: TMemo;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Memo3: TMemo;
Memo4: TMemo;
Memo5: TMemo;
procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
Fmatr:Tmatr;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
k,l:integer;
implementation
{$R *.dfm}
// ****************************************************************
procedure TForm1.FormCreate(Sender: TObject);
begin
doublebuffered:=TRUE;
end;
// ****************************************************************
procedure TForm1.Button3Click(Sender: TObject);
var
r:integer;
begin
r:=MessageDlg('Закончить работу?',mtconfirmation,[mbOk,mbCancel],0);
Case R of
idOk : Form1.Close;
idCancel:;
end;
end;
// ****************************************************************
Function readmatr( const Filename:string):Tmatr;
var
f:textfile;
i,j:byte;
M,N:integer;
begin
result:=NIL;
AssignFile(f,Filename);
reset(f);
try
M:=0;
while ( not eoln( f ) ) do
begin
read(f,I);
inc(M);
end;
if ( M=0 ) then exit;
N:=1;
readln(f);
while ( not eof( f ) ) do
begin
readln(f);
inc(N);
end;
if ( N=0 ) then exit;
close(f);
reset(f);
setlength(result,N,M);
for i:=0 to (N-1) do
begin
for j:=0 to (M-1) do
read(f,result[i,j]);
readln(f);
end;
finally close(f);
end;
end;
// ****************************************************************
procedure vivod ( const Matr:Tmatr; Lines:Tstrings);
var
i,j:integer;
s:string;
begin
Lines.clear;
for i:=0 to high(Matr) do
begin
s:='';
for j:=0 to length(Matr[i])-1 do
S:= S + Format('%-11d',[Matr[i,j]]);
Lines.Add(S);
end;
end;
// ****************************************************************
function poisk(const Matr:Tmatr; Lines:TStrings): Tmatr;
var
i,j:integer;
begin
k:=1;
l:=1;
for i:=1 to high(Matr) do
for j:=1 to high(Matr) do
if Matr[i,j]<Matr[k,l] then
begin
k:=i;
l:=j;
Lines.Text :=FloatToStr(Matr[k,l]);
end;
end;
// ****************************************************************
function zamena(const Matr:Tmatr; Lines:TStrings): Tmatr;
Var
p,i,j:integer;
begin
j:=1;
for i:=1 to high(Matr) do
begin
p:=Matr[i,l];
If j<=high(Matr) then
Matr[k,j]:=p;
j:=j+1;
Lines.Text :=FloatToStr(Matr[i,j]);
end;
end;
// ****************************************************************
// ****************************************************************
procedure TForm1.Button1Click(Sender: TObject);
begin
with TOpenDialog.Create(self) do
try
Filter:='test files(*.txt)|*.txt|Any file (*.*)|*.*';
InitialDir:='.';
Options:= Options + [ofFileMustExist];
if ( not Execute ) then
exit;
Fmatr:=readmatr(FileName);
vivod(Fmatr,Memo1.Lines);
Finally Free;
end;
end;
// ****************************************************************
procedure TForm1.Button2Click(Sender: TObject);
begin
vivod(Fmatr,Memo2.Lines);
poisk(Fmatr,Memo5.lines);
end;
end.
Заранее спасибо!