亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gauss消去法代碼.txt

?? 本軟件系我Delphi學習習作
?? TXT
字號:
unit Gauss1Unit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DBCtrls, dbcgrids, Grids, DBGrids, dblookup;

type
  TGauss1Form = class(TForm)
    Label1: TLabel;
    ExitButton: TButton;
    GroupBox1: TGroupBox;
    Label3: TLabel;
    Label4: TLabel;
    ReInputButton: TButton;
    KeyButton: TButton;
    MatrixMemo: TMemo;
    ResultMemo: TMemo;
    SysHint: TMemo;
    procedure ExitButtonClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure MatrixMemoOnClick(Sender: TObject);
    procedure ReInputButtonClick(Sender: TObject);
    procedure KeyButtonClick(Sender: TObject);
    procedure MatrixMemoOnExit(Sender: TObject);
    procedure StrToMat();
    procedure Translate(str: string;l: integer);
    procedure GaussXY();
    procedure GaussHD();
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Gauss1Form: TGauss1Form;
  Mat: array[1..100,1..100] of double;
  Row,Tier: integer;  //行標、列標
  MatR,MatT: integer; //行,列總數
  ClearMemo: boolean; //是否需要清空
  MyKey: boolean;     //是否可以進行計算
  HDKey: boolean;     //是否能用Gauss消去法求解(方程能否夠進行回代過程)
  hLine: integer;     //操作提示框行標
  ReMsg: string;      //輸出結果提示
  MatMsg0: array[0..10] of string; //操作提示0
  MatMsg1: array[0..10] of string; //操作提示1
  MatMsg2: array[0..10] of string; //操作提示2
  MatMsg3: array[0..10] of string; //操作提示3
  ErrSum: integer;
  error:array[1..20] of string;    //錯誤提示

implementation

{$R *.dfm}

procedure TGauss1Form.ExitButtonClick(Sender: TObject);
begin
  Close;
end;

//初始化
procedure TGauss1Form.FormCreate(Sender: TObject);
begin
  Row:=1;Tier:=1;
  ClearMemo:=true;
  MyKey:=false;    //輸入未完成,不可計算
  ErrSum:=0;       //錯誤數初始值置0
  Gauss1Form.ResultMemo.ReadOnly:=true;//只讀
  Gauss1Form.SysHint.ReadOnly:=true;
  //版權信息
  MatMsg0[0]:='                                       Gauss消去法解線性方程組   1.05版';
  MatMsg0[1]:='                                   作者:長江大學  計算機科學學院  譚文政';
  MatMsg0[2]:='                                   郵箱:xia0tan2006@126.com';
  MatMsg0[3]:='                                              *  版權沒有  支持傳播  *';
  MatMsg0[4]:='說明:';
  MatMsg0[5]:='    本軟件系我Delphi學習習作,實現了用Gauss消去法解線性方程組,能識別用戶以文本方';
  MatMsg0[6]:='式輸入方程組增廣矩陣,并且能檢測一些常見的輸入錯誤及其位置,方程的解以文本方式輸';
  MatMsg0[7]:='出在結果顯示框。希望用戶盡量按照軟件操作提示操作,盡管我細心的考慮過很多可能出現';
  MatMsg0[8]:='的錯誤,但仍有許多不足的地方,歡迎各位朋友發現并指出,本人非常感激。';
  MatMsg0[9]:='                                                                                             2006年3月  譚文政';
  //操作提示
  MatMsg1[0]:='矩陣格式定義:<矩陣開始符>數字<元素分隔符>數字...<行結束符>...<矩陣結束符>。      ';
  MatMsg1[1]:='   注釋:必須是一個線性方程組的增廣矩陣(即:滿足總列數等于總行數加1),矩陣開始、';
  MatMsg1[2]:='結束符號分別為"["和"]",元素分隔符可以是","或空格,行結束符只能是";"。請按要求輸入。';
  //輸出結果說明
  MatMsg2[0]:='方程組求解結果以文本方式輸出在結果顯示框(可以復制)';
  MatMsg2[1]:='例如:X1=3.14,X2=-7.3  ...';
  //錯誤提示
  error[1]:='ERROR(1):矩陣缺少開始符號"[".';
  error[2]:='ERROR(2):小數點不能打頭.';
  error[3]:='ERROR(3):同一個數字里面出現多個小數點';
  error[4]:='ERROR(4):負號不能出現在一個數的中間';
  error[5]:='ERROR(5):0不能作數字打頭';
  error[6]:='ERROR(6):多余元素分隔符","';
  error[7]:='ERROR(7):出現非法字符';
  error[8]:='ERROR(8):矩陣行列數錯誤';
  error[9]:='ERROR(9):與上行元素個數不相等';

end;

procedure TGauss1Form.MatrixMemoOnClick(Sender: TObject);
begin
  ErrSum:=0;    //更新矩陣,錯誤總數置0
  Gauss1Form.SysHint.Clear();
  for hLine:=0 to 2 do
  begin
    Gauss1Form.SysHint.Lines.Add(MatMsg1[hLine]);
  end;
  
  if(ClearMemo=True)then //是否需要清空輸入框
  begin
    Gauss1Form.MatrixMemo.Clear();
    Gauss1Form.MatrixMemo.SetFocus();
    ClearMemo:=false;
  end;
end;

procedure TGauss1Form.ReInputButtonClick(Sender: TObject);
begin
  ErrSum:=0;          //重新輸入矩陣,錯誤總數置0
  if(ClearMemo=false)then
  begin
    Gauss1Form.MatrixMemo.Lines.Text:='在此輸入增廣矩陣';
    ClearMemo:=true;  //表示需要清空輸入框
  end;
  Gauss1Form.SysHint.Clear();
  for hLine:=0 to 9 do
  begin
    Gauss1Form.SysHint.Lines.Add(MatMsg0[hLine]);
  end;
  hLine:=0;
  Gauss1Form.ResultMemo.Text:='結果顯示框';
end;

procedure TGauss1Form.KeyButtonClick(Sender: TObject);
var
  k: integer;
begin
  if(Gauss1Form.MatrixMemo.Lines.Strings[0]='在此輸入增廣矩陣')then
  begin
    ShowMessage('請輸入矩陣再進行求解');
    exit;
  end;
  if(MyKey=true)then
  begin
    MyKey:=false;  //正在計算中,不可計算
    GaussXY();     //消元過程
    if(HDKey=true)then
    begin
      GaussHD();   //回代過程
    end else
    begin
      Gauss1Form.ResultMemo.Text:='該方程組不能用Gauss消去法求解';
      exit;
    end;
  end else
  begin
    Gauss1Form.SysHint.Lines.Add('不可計算,請先更正矩陣錯誤');
    exit;          //MyKey=false,不可計算
  end;
  Gauss1Form.ResultMemo.Clear();
  Gauss1Form.ResultMemo.Text:='方程組求解結果:';
  for k:=1 to MatR do
  begin
    Gauss1Form.ResultMemo.Lines.Add('   X'+IntToStr(k)+'='+FloatToStr(Mat[k][MatT]));
  end;
  Gauss1Form.SysHint.Lines.Add('方程組求解結果已輸出在結果顯示框');
end;

procedure TGauss1Form.MatrixMemoOnExit(Sender: TObject);
begin
//輸入完成且無錯誤,設置MyKey:=true,即可以進入求解
  ErrSum:=0;          //編譯前將總錯誤數置0
  StrToMat();
  if(ErrSum=0)then
  begin
    MyKey:=true;      //MyKey=true 可以進行計算
  end else
  begin
    Gauss1Form.ResultMemo.Text:='矩陣有錯誤,請更正或重新輸入';
  end;
end;

//矩陣字符串解析過程
procedure TGauss1Form.StrToMat();
var
  lStr: string;
  l: integer;       //MatrixMemo文本行標
begin
  lStr:='';l:=0;MatR:=0;MatT:=0;
  Gauss1Form.SysHint.Text:='正在讀取矩陣...';
  lStr:=Gauss1Form.MatrixMemo.Lines.Strings[l];
  while (lStr<>'') do
  begin
    Translate(lStr,l);
    l:=l+1;
    lStr:=Gauss1Form.MatrixMemo.Lines.Strings[l];
  end;
  if((MatR=0)or(MatT=0)or((MatT-MatR)<>1))then
  begin
    Gauss1Form.SysHint.Lines.Add('    '+error[8]);
    ErrSum:=ErrSum+1;
  end;
  Gauss1Form.SysHint.Lines.Add('矩陣共 '+IntToStr(ErrSum)+'錯誤');
end;

procedure TGauss1Form.Translate(str: string;l: integer);
var
  ErrHint: string; //錯誤提示字符串
  nStr: string;    //臨時存放數字字符串
  Point: boolean;
  i: integer;
begin
  i:=1; ErrHint:=''; nStr:=''; Point:=false;
  if(l=0)then
  begin
    if((str='')or(str='在此輸入增廣矩陣'))then
    begin
      ErrSum:=ErrSum+1;
      ShowMessage('請輸入矩陣再進行求解');
    end
    else if(str[1]<>'[')then
    begin
      ErrSum:=ErrSum+1;
      ErrHint:='    第'+IntToStr(l)+'行  '+error[1];
      Gauss1Form.SysHint.Lines.Add(ErrHint);
    end else
    begin
      i:=i+1;
    end;
  end;

  while(str[i]<>'')do
  begin
    if((str[i]>='0')and(str[i]<='9')or(str[i]='.')or(str[i]='-'))then
    begin
      if(str[i]='.')then
      begin
        if(nStr='')then
        begin
          ErrSum:=ErrSum+1;
          ErrHint:='    第'+IntToStr(l)+'行  '+error[2];
          Gauss1Form.SysHint.Lines.Add(ErrHint);
        end
        else if(Point=true)then //Point確定該數是否已經是小數
        begin
          ErrSum:=ErrSum+1;
          ErrHint:='    第'+IntToStr(l)+'行  '+error[3];
          Gauss1Form.SysHint.Lines.Add(ErrHint);
        end else
        begin
          nStr:=nStr+str[i];
          Point:=true;      //將該數設為小數
        end;
      end
      else if((str[i]='-')and(nStr<>''))then
      begin
        ErrSum:=ErrSum+1;
        ErrHint:='    第'+IntToStr(l)+'行  '+error[4];
        Gauss1Form.SysHint.Lines.Add(ErrHint);
      end
      else if(nStr='0')then//如果第一個字符為"0",不能跟除"."外的任何字符
      begin
        ErrSum:=ErrSum+1;
        ErrHint:='    第'+IntToStr(l)+'行  '+error[5];
        Gauss1Form.SysHint.Lines.Add(ErrHint);
      end else
      begin
        nStr:=nStr+str[i];
      end;
    end
    else if((str[i]=' ')or(str[i]=','))then //連續的空格可以忽略
    begin
      if(nStr<>'')then
      begin
        //ShowMessage('行:'+IntToStr(Row)+'列:'+IntToStr(Tier)+'值:'+nStr);
        Mat[Row][Tier]:=StrToFloat(nStr);
        nStr:=''; Point:=false;
        Tier:=Tier+1;
      end
      else if(str[i]=',')then   //空格后面不能有','分隔符
      begin
        ErrSum:=ErrSum+1;
        ErrHint:='    第'+IntToStr(l)+'行  '+error[6];
        Gauss1Form.SysHint.Lines.Add(ErrHint);
      end;
    end
    else if(str[i]=';')then  //如果同時出現多個";"呢?如果";"打頭呢?
    begin
      //ShowMessage('行:'+IntToStr(Row)+'列:'+IntToStr(Tier)+'值:'+nStr);
      if(nStr<>'')then
      begin
        Mat[Row][Tier]:=StrToFloat(nStr);
        nStr:=''; Point:=false;
        Tier:=Tier+1;
      end;
      Row:=Row+1; //行加1
      if((MatT<>0)and(Tier<>MatT))then
      begin
        ErrSum:=ErrSum+1;
        ErrHint:='    第'+IntToStr(l)+'行  '+error[9];
        Gauss1Form.SysHint.Lines.Add(ErrHint);
      end;
      MatT:=Tier;
      Tier:=1;    //換到下一行的開始
    end
    else if(str[i]=']')then  //如果"]"出現在中間呢?
    begin
      //ShowMessage('行:'+IntToStr(Row)+'列:'+IntToStr(Tier)+'值:'+nStr);
      if(nStr<>'')then
      begin
        Mat[Row][Tier]:=StrToFloat(nStr);
        nStr:=''; Point:=false;
        Tier:=Tier+1;
      end;
      if((MatT<>0)and(Tier<>MatT))then
      begin
        ErrSum:=ErrSum+1;
        ErrHint:='    第'+IntToStr(l)+'行  '+error[9];
        Gauss1Form.SysHint.Lines.Add(ErrHint);
      end;
      MatR:=Row;MatT:=Tier-1;
      //ShowMessage(' 行數:'+IntToStr(MatR)+' 列數:'+IntToStr(MatT));
      Row:=1;Tier:=1;
      exit;
    end else
    begin
      ErrSum:=ErrSum+1;
      ErrHint:='    第'+IntToStr(l)+'行  '+error[7];
      Gauss1Form.SysHint.Lines.Add(ErrHint);
    end;
    i:=i+1;
  end;
end;

//Gauss消去法消元過程
procedure TGauss1Form.GaussXY();
var
  k,i,j:integer;
begin
  for k:=1 to MatR-1 do
  begin
    for i:=k+1 to MatR do
    begin
      for j:=k+1 to MatT do
      begin
        if(Mat[k][k]=0)then
        begin
          HDKey:=false;//不能用Gauss消去法求解
          exit;
        end;
        Mat[i][j]:=Mat[i][j]-(Mat[i][k]/Mat[k][k])*Mat[k][j];
      end;
    end;
  end;
  HDKey:=true;//能用Gauss消去法求解
end;

//Gauss消去法回代過程
procedure TGauss1Form.GaussHD();
var
  k,j: integer;
  SumM: double;
begin
  SumM:=0;
  Gauss1Form.SysHint.Lines.Add('總行數:'+IntToStr(MatR)+'  總列數:'+IntToStr(MatT));
  Mat[MatR][MatT]:=Mat[MatR][MatT]/Mat[MatR][MatT-1];
  //ShowMessage(FloatToStr(Mat[MatR][MatT]));
  for k:=MatR-1 to 1 do
  begin
    for j:=k+1 to MatR do
    begin
      SumM:=SumM+Mat[k][j]*Mat[j][MatT];
      //ShowMessage(FloatToStr(SumM));
    end;
    Mat[k][MatT]:=(Mat[k][MatT]-SumM)/Mat[k][k];
    //ShowMessage(FloatToStr(Mat[k][MatT]));
    SumM:=0;
  end;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲图片欧美激情| 高清不卡在线观看| 精品一区二区三区在线视频| 国产高清久久久久| 欧美日韩国产美女| 中文字幕免费不卡| 蜜乳av一区二区三区| 91蜜桃在线免费视频| wwwwww.欧美系列| 日韩精品一区第一页| av网站一区二区三区| 久久毛片高清国产| 美女精品一区二区| 欧美精品在线视频| 亚洲黄色av一区| 9人人澡人人爽人人精品| 精品欧美一区二区三区精品久久| 欧美精品乱码久久久久久按摩| 国产99久久久国产精品| 欧美一区二区三区电影| 亚洲欧美偷拍卡通变态| 成人激情午夜影院| 久久久www成人免费无遮挡大片| 丝袜亚洲另类丝袜在线| 色欧美日韩亚洲| ...中文天堂在线一区| 国产成人av资源| 久久久久久久久久看片| 久久av资源网| 日韩一区二区三区电影在线观看 | 久久精品国产成人一区二区三区 | 欧美精品久久一区二区三区| 亚洲精品伦理在线| 色婷婷av一区二区三区gif| 亚洲免费观看高清完整版在线观看熊| 国产大陆精品国产| 国产精品乱人伦一区二区| 不卡av电影在线播放| 亚洲欧洲三级电影| 91精品国模一区二区三区| 亚洲国产精品一区二区久久恐怖片| 色婷婷av一区| 亚洲a一区二区| 91精品国产综合久久福利软件| 日韩黄色在线观看| 日韩三级在线免费观看| 激情五月婷婷综合| 中文欧美字幕免费| 色综合视频一区二区三区高清| 亚洲乱码中文字幕| 欧美日韩极品在线观看一区| 日韩电影在线免费观看| 欧美一区日本一区韩国一区| 精品一区二区三区视频在线观看| 久久久久久97三级| 91蜜桃网址入口| 日日夜夜精品视频免费| 久久久99精品免费观看| 不卡一区二区中文字幕| 亚洲成人av中文| 26uuu成人网一区二区三区| 丁香亚洲综合激情啪啪综合| 亚洲最大的成人av| 欧美精品一区二区三区四区| 成人禁用看黄a在线| 亚洲电影你懂得| 久久久久高清精品| 在线视频欧美精品| 国产精品一区二区三区四区| 亚洲精品美腿丝袜| 久久婷婷国产综合国色天香| 日本精品视频一区二区三区| 另类小说色综合网站| 亚洲男人的天堂一区二区| 日韩欧美中文字幕一区| 97精品久久久午夜一区二区三区 | 在线国产电影不卡| 韩国中文字幕2020精品| 一区二区三区美女视频| 亚洲精品在线观看视频| 欧美性生交片4| 成人在线一区二区三区| 男人操女人的视频在线观看欧美| 国产性做久久久久久| 欧美丰满少妇xxxxx高潮对白| 成人午夜短视频| 裸体健美xxxx欧美裸体表演| 亚洲激情第一区| 国产调教视频一区| 欧美一级久久久久久久大片| 99久久精品免费看国产免费软件| 紧缚奴在线一区二区三区| 亚洲妇女屁股眼交7| 最新日韩av在线| wwwwww.欧美系列| 欧美一卡二卡三卡| 欧美无乱码久久久免费午夜一区| 不卡一二三区首页| 国产一区二区精品久久91| 青青草97国产精品免费观看无弹窗版| 国产精品对白交换视频| 久久免费国产精品| 久久久久久久网| 久久欧美一区二区| 精品国内片67194| 欧美一区二区私人影院日本| 欧美日韩亚洲综合在线 | 欧美三级欧美一级| 色欧美88888久久久久久影院| 国产成人免费视| 国产精品一区二区三区乱码| 精品一区二区久久| 精品一区二区三区视频在线观看 | 国产宾馆实践打屁股91| 精品一区二区在线观看| 激情深爱一区二区| 精品在线观看视频| 国产精品18久久久| 成人综合日日夜夜| caoporn国产精品| av电影在线不卡| 在线亚洲免费视频| 欧美日韩精品一区二区| 欧美视频精品在线观看| 欧美日韩日本视频| 日韩一区二区三免费高清| 日韩欧美一区中文| 久久麻豆一区二区| 中文字幕乱码日本亚洲一区二区| 国产精品久久久久一区| 亚洲欧美另类在线| 国产一区二区三区久久悠悠色av| 极品少妇xxxx偷拍精品少妇| 国产精品一卡二卡在线观看| 国产suv精品一区二区6| 91女人视频在线观看| 欧美日韩国产色站一区二区三区| 91精品视频网| 国产欧美一区视频| **欧美大码日韩| 日韩电影在线观看网站| 国产美女精品一区二区三区| 不卡视频免费播放| 欧美久久久久久久久中文字幕| 日韩亚洲电影在线| 欧美高清在线精品一区| 亚洲色图在线播放| 日本欧美一区二区在线观看| 国产精品亚洲第一区在线暖暖韩国 | 欧美激情一区二区三区蜜桃视频| 中文字幕中文字幕中文字幕亚洲无线| 亚洲自拍都市欧美小说| 久草在线在线精品观看| 91小视频免费看| 欧美不卡123| 一区二区三区加勒比av| 国模套图日韩精品一区二区| 一本一道综合狠狠老| 精品久久久久久久久久久久久久久 | 国产精品人妖ts系列视频| 亚洲午夜久久久久| 国产成人精品影视| 欧洲国产伦久久久久久久| 久久色中文字幕| 亚洲高清视频在线| 成人免费视频一区| 日韩一二在线观看| 亚洲一区二区视频在线观看| 国产精品一区三区| 欧美一卡二卡三卡| 亚洲一区在线免费观看| 粉嫩13p一区二区三区| 91精品国产高清一区二区三区蜜臀| 国产欧美一区二区精品性色 | 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 日韩综合一区二区| 在线精品视频免费播放| 国产精品系列在线| 国产一区二区伦理片| 欧美一区二区视频观看视频| 亚洲一区二区三区中文字幕| 成人自拍视频在线观看| 国产夜色精品一区二区av| 日本vs亚洲vs韩国一区三区二区| 色播五月激情综合网| 国产精品久久久久国产精品日日 | 日本不卡免费在线视频| 欧美自拍偷拍午夜视频| 中文字幕在线观看不卡视频| 国产精品一二三在| 久久久综合网站| 韩国精品免费视频| 精品国产露脸精彩对白| 久久国产精品99久久人人澡| 777色狠狠一区二区三区| 亚洲午夜电影网| 在线免费av一区| 一区二区三区av电影| 欧美色视频一区| 亚洲成人资源网|