Подскажите, как сделать форматированный вывод: справа налево!
Код:
unit Unit88222;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TMatr= array of array of real;
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
OD: TOpenDialog;
Panel1: TPanel;
Memo1: TMemo;
Memo2: TMemo;
Splitter1: TSplitter;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
procedure task(matrica:TMatr);
public
FMatr:TMatr;
Matric:TMatr;
end;
var
Form1: TForm1;
N,M:Integer;
implementation
{$R *.dfm}
function load(const Fname:string;var N:Integer;var M:Integer):TMatr;
var
F:TextFile;
I,J:Integer;
K:real;
Begin
Reset(F,Fname);
try
M:=0;
Result:=NIL;
while (NOT EOLN(F)) do
begin
read(F,K);
inc(M);
end;
if(M=0) then
exit;
N:=1;
readln(F);
while (NOT EOF(F)) do
begin
readln(F);
inc(N);
end;
SetLength(Result,N,M);
Reset(F);
for I:=0 to N-1 do
begin
for J:=0 to M-1 do
read(F,Result[I,J]);
end;
finally
closeFile(F);
end;
End;
procedure TForm1.task(matrica:TMatr);
var
I,J,K,max:Integer;
SR:real;
begin
max:=0;
SR:=0;
K:=0;
for J:=0 to M-1 do
begin
for I:=0 to N-1 do
begin
SR:=SR+matrica[I,J];
if matrica[I,J]>matrica[max,j] then
max:=I;
end;
SR:=SR/N;
if ((matrica[max,J]-SR)>matrica[0,J]) then K:=J;
SR:=0;
end;
for I:=0 to N-1 do
matrica[I,K]:=1;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if(OD.Execute) then
FMatr:=load(OD.Filename,N,M);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
I,J:Integer;
S:String;
begin
Memo1.Clear;
for I:=0 to High(FMatr) do
begin
S:='';
for J:=0 to High(FMatr[i]) do
S:=S+floatToStr(FMatr[I,J])+' ';
//format('%5d',[FMatr[I,J]]);
Memo1.Lines.Add(S);
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
I,J:Integer;
S:String;
begin
Memo2.clear;
Matric:=FMatr;
SetLength(Matric,N,M);
task(Matric);
for I:=0 to High(Matric) do
begin
S:='';
for J:=0 to High(Matric[i]) do
S:=S+floatToStr(Matric[I,J])+' ';
//format('%5d',[FMatr[I,J]]);
Memo2.Lines.Add(S);
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
close;
end;
end.
Исходная матрица:
Код:
50 40 -1 48
1 3 5 5
9 8 6 6
6 7 -1 6
Необходимо:
Код:
50 40 -1 48
1 3 5 5
9 8 6 6
6 7 -1 6