📄 unitmain.pas
字号:
unit UnitMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Memo1: TMemo;
Memo2: TMemo;
Button2: TButton;
procedure Button1Click(Sender: TObject);
//procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
f:textfile; i,j,k,s,n:integer;t:real;
A:array [1..10,1..10] of real;
X:array [1..10] of real;
begin
Memo1.Lines.SaveToFile('data.txt');
assignfile(f,'data.txt');
reset(f);
readLn(f,n); //read(f,n);
for i:=1 to n do
begin
for j:=1 to n do read(f,A[i,j]);
readLn(f,x[i]);
end;
closeFile(f);
for k:=1 to n-1 do
begin
//选主元
s:=k;
for i:=k+1 to n do
if abs(A[i,k])>abs(A[s,k]) then s:=1;
// A[k,k],A[k+1,k],...,A[n,k]
for j:=k to n do
begin
t:=A[s,j];A[s,j]:=A[k,j];A[k,j]:=t;
end;
t:=x[k];x[k]:=x[s];x[s]:=t;
for i:=k+1 to n do
begin
t:=A[i,k]/A[k,k];
end;
for j:=k to n do
A[i,j]:=A[i,j]-t*A[k,j];
x[i]:=x[i]-t*x[k];
end;
//回代
x[n]:=x[n]/A[n,n];
for i:=n-1 downto 1 do
begin
for j:=i+1 to n do
X[i]:=X[i]-A[i,j]*X[j];
X[i]:=X[i]/A[k,k];
end;
assignfile(f,'result.txt');
rewrite(f); //append
for i:=1 to n do
writeLn(f,'X[',i,']=',X[i]:0:4);
writeLn(f);
closeFile(f);
memo2.Lines.LoadFromFile('result.txt');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//Memo1.Lines.LoadFromFile('data.txt');
Button1.Enabled:=false;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
memo1.Lines.LoadFromFile('data.txt');
button1.Enabled:=true;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -