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

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

?? unit1.cpp

?? 可以簡單計算petri網的狀態空間,用來分析petri網的特性
?? CPP
字號:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
    this->Label1->Caption = "請輸入位置(Place)的數目: N(小于10)=";
    this->Edit1->Text = "";

    this->Label2->Caption = "請輸入過渡(Tansition)的數目: M(小于10)=";
    this->Edit2->Text = "";

    GroupBox1->Align=alClient;
    GroupBox2->Align=alClient;
    GroupBox3->Align=alClient;
    GroupBox2->Visible = false;
    GroupBox3->Visible = false;
    this->Width = 600;
    this->Height = 250;

}


//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
    if( Key != 8 )
    {
      if( (Key<'0' || Key>'9') || (Key=='0' && Edit1->Text.Length() == 0) )
       {
            Key = 0;
            MessageBeep(MB_OK);
       }
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit2KeyPress(TObject *Sender, char &Key)
{
   if( Key != 8 )
    {
      if( (Key<'0' || Key>'9') || (Key=='0' && Edit2->Text.Length() == 0) )
       {
            Key = 0;
            MessageBeep(MB_OK);
       }
    }
}
//----------------------------------------------------------------------------
void __fastcall TForm1::Edit3KeyPress(TObject *Sender, char &Key)
{
   if( Key != 8 )
    {
      if( Key<'0' || Key>'9' )
       {
            Key = 0;
            MessageBeep(MB_OK);
       }
    }
}
//-----------------------------------------------------------------------------
void __fastcall TForm1::EditKeyPress(TObject *Sender, char &Key)
{
    if( Key != 8 )
    {
      if(Key<'0' || Key>'1') 
       {
            Key = 0;
            MessageBeep(MB_OK);
       }
    }
}

//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    this->Edit1->Text = "";
    this->Edit2->Text = "";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
     if( Edit1->Text.Length() == 0 || Edit2->Text.Length() == 0)
     {
        MessageBox(this->Handle, "輸入數據為空!請重輸!", "錯誤", 0);
        return;
     }
     
     n = Edit1->Text.ToInt();
     m = Edit2->Text.ToInt();

     this->Height = 400 + 40*m ;
     this->Width  = (100 + 70*n >600)?100 + 70*n:600;
     this->Button3->Top = 300 + 40*m ;
     this->Button3->Left = this->Width-200 ;

     for(int i=0; i<500; i++)
        for(int j=0; j<MaxN; j++)
            StatusSpace[i][j] = 0;
     
     Label3->Caption = "請逐個輸入每個過渡的輸入位置,是輸入位置用1表示,反之用0表示:";
     Label4->Caption = "請逐個輸入每個過渡的輸出位置,是輸出位置用1表示,反之用0表示:";
     Label4->Left = 40;
     Label4->Top = 100+20*m;
     Label5->Caption = "請逐個輸入每個位置的Token數:";
     Label5->Left = 40;
     Label5->Top = 195+40*m;
     Label6->Caption = "請輸入狀態轉移的你想要的最大深度:";
     Label6->Left = 40;
     Label6->Top = 300+40*m;
     Edit3->Left = 270;
     Edit3->Top = 300+40*m;
     GroupBox1->Visible = false;
     GroupBox2->Visible = true;
     EditIn.Length  = m;
     EditOut.Length = m;
     EditToken.Length = n;
     LabelIn.Length  = m;
     LabelOut.Length = m;
     LabelPlaceIn.Length = n;
     LabelPlaceOut.Length = n;
     LabelPlaceToken.Length = n;

     for(int i=0; i<n; i++)
     {
        LabelPlaceIn[i]  = new TLabel(this);
        LabelPlaceIn[i]->Parent =  GroupBox2;
        LabelPlaceIn[i]->Caption = "位置" + String(i+1);
        LabelPlaceIn[i]->Height = 20;
        LabelPlaceIn[i]->Width = 50;
        LabelPlaceIn[i]->Top =  60;
        LabelPlaceIn[i]->Left = 50+i*70;
        
        LabelPlaceOut[i] = new TLabel(this);
        LabelPlaceOut[i]->Parent =  GroupBox2;
        LabelPlaceOut[i]->Caption = "位置" + String(i+1);
        LabelPlaceOut[i]->Height = 20;
        LabelPlaceOut[i]->Width = 50;
        LabelPlaceOut[i]->Top =  125+20*m;
        LabelPlaceOut[i]->Left = 50+i*70;

        LabelPlaceToken[i] = new TLabel(this);
        LabelPlaceToken[i]->Parent =  GroupBox2;
        LabelPlaceToken[i]->Caption = "位置" + String(i+1);
        LabelPlaceToken[i]->Height = 20;
        LabelPlaceToken[i]->Width = 50;
        LabelPlaceToken[i]->Top =  220+40*m;
        LabelPlaceToken[i]->Left = 50+i*70;

        EditToken[i] = new TEdit(this);
        EditToken[i]->Name = "EditToken" + String(i+1);
        EditToken[i]->Parent = GroupBox2;
        EditToken[i]->Text = "0";
        EditToken[i]->Width = 50;
        EditToken[i]->Height = 20;
        EditToken[i]->Top  = 240+40*m;
        EditToken[i]->Left = 50+i*70;
        EditToken[i]->Visible = true;
        EditToken[i]->MaxLength = 2;
        EditToken[i]->OnKeyPress = Edit3KeyPress;


     }

     for(int i=0; i<m; i++)
     {
        EditIn[i].Length  = n;
        EditOut[i].Length = n;

        LabelIn[i]  = new TLabel(this);
        LabelIn[i]->Parent =  GroupBox2;
        LabelIn[i]->Caption = "過渡" + String(i+1);
        LabelIn[i]->Height = 20;
        LabelIn[i]->Width = 50;
        LabelIn[i]->Top = 85+i*20;
        LabelIn[i]->Left = 10;

        LabelOut[i] = new TLabel(this);
        LabelOut[i]->Parent =  GroupBox2;
        LabelOut[i]->Caption = "過渡" + String(i+1);
        LabelOut[i]->Height = 20;
        LabelOut[i]->Width = 50;
        LabelOut[i]->Top = 155+20*m+i*20;
        LabelOut[i]->Left = 10;

        for(int j=0; j<n; j++)
        {
            EditIn[i][j] = new TEdit(this);
            EditIn[i][j]->Name = "EditIn" + String(i) + String(j);
            EditIn[i][j]->Parent = GroupBox2;
            EditIn[i][j]->Text = "0";
            EditIn[i][j]->Width = 50;
            EditIn[i][j]->Height = 20;
            EditIn[i][j]->Top  = 80+i*20;
            EditIn[i][j]->Left = 50+j*70;
            EditIn[i][j]->Visible = true;
            EditIn[i][j]->MaxLength = 1;
            EditIn[i][j]->OnKeyPress = EditKeyPress;

            EditOut[i][j] = new TEdit(this);
            EditOut[i][j]->Name = "EditOut" + String(i) + String(j);
            EditOut[i][j]->Parent = GroupBox2;
            EditOut[i][j]->Text = "0";
            EditOut[i][j]->Width = 50;
            EditOut[i][j]->Height = 20;
            EditOut[i][j]->Top  = 150+20*m+i*20;
            EditOut[i][j]->Left = 50+j*70;
            EditOut[i][j]->Visible = true;
            EditOut[i][j]->MaxLength = 1;
            EditOut[i][j]->OnKeyPress = EditKeyPress;
         }
     }

}

//---------------------------------------------------------------------------
bool __fastcall TForm1::CanFire(int T, int Current)
{ //判斷當前過渡T在 當前狀態Current下能否被點燃
   for(int i=0; i<n; i++)
   {
      int temp = EditIn[T][i]->Text.ToInt(); //是T的輸入位置
      if( (temp == 1) && (StatusSpace[Current][i] == 0) ) //但當前狀態該位置沒有Token
                   return false;
   }

   return true;

}
//-------------------------------------------------------------------------
bool __fastcall TForm1::IsRepeat(int t)
{  //判斷t位置的狀態是否與它前面的狀態有重復
   int i,j;
   for( i=0; i<t; i++)
   {
      for( j=0; j<n; j+=1)
        {  if(StatusSpace[t][j] != StatusSpace[i][j])   break;  }
      if( j==n )  return true;
   }

   return false;


}
//--------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)
{
    for(int i=0; i<m; i++)
    {
       for(int j=0; j<n; j++)
       {
          if( EditIn[i][j]->Text == "" || EditOut[i][j]->Text == "" )
          {
               MessageBox(this->Handle, "數據輸入不完整!", "錯誤", 0);
               return;
          }
       }
    }

    for(int i=0; i<n; i++)
    {
       if(EditToken[i]->Text == "")
       {
               MessageBox(this->Handle, "數據輸入不完整!", "錯誤", 0);
               return;
       }
    }

    if(Edit3->Text == "")
    {
          MessageBox(this->Handle, "數據輸入不完整!", "錯誤", 0);
          return;
    }

    if(Edit3->Text.ToInt()>20)
    {
          MessageBox(this->Handle, "你需要計算的深度過大!請改小點!", "錯誤", 0);
          return;
    }

    int depth, start, end, total;
    depth=start=end=0;
    total=1;

    for(int i=0; i<n; i++)   StatusSpace[0][i] = EditToken[i]->Text.ToInt();

    while(depth<Edit3->Text.ToInt())
    {
       for(int i=start; i<=end; i++)
       {
           for(int j=0; j<m; j++)//對每一個過渡
           {
               if( CanFire(j,i) )//該過渡能被點燃
               {
                    for(int s=0; s<n; s++) //復制當前狀態
                            StatusSpace[total][s] = StatusSpace[i][s];
                    for(int k=0; k<n; k++) //修改輸入輸出位置的Token
                    {
                        if(EditIn[j][k]->Text.ToInt()==1)//是該過渡的輸入
                            StatusSpace[total][k] -= 1;  //失去Token
                        if(EditOut[j][k]->Text.ToInt()==1)//是該過渡的輸出
                            StatusSpace[total][k] += 1;  //得到Token
                    }
                    
                    StatusSpace[total][n]  = i;  //保存狀態轉移的原狀態
                    StatusSpace[total][n+1]= j ;    //保存狀態轉移的經過的過渡

                    if(!IsRepeat(total))   total += 1;  //沒有與以前的狀態重復就保存
               }
           }//當前狀態所有過渡都已經處理完畢
       }//該層已經處理完畢
       if( end+1 == total )   break;  //沒有生成新的狀態
       start = end+1;
       end   = total-1;  //設置新的開始位置與結束位置
       depth += 1;
    }

    GroupBox1->Visible = false;
    GroupBox3->Visible = true;
    GroupBox2->Visible = false;
    this->Width = 800;

    TListItem *NewItem;
    NewItem = Form1->ListView1->Items->Add();
    NewItem->Caption = "初始狀態:U" + String(0);
    AnsiString s;
    for(int i=0; i<n; i++)  s = s + AnsiString(StatusSpace[0][i]) + "--";
    NewItem->SubItems->Add(s);

    for(int i=1; i<total; i++)
    {
        NewItem = Form1->ListView1->Items->Add();
        int j=StatusSpace[i][n+1]; //原來過渡
        AnsiString s1 ;
        s1 = "T" + AnsiString(j+1); 
        int k = StatusSpace[i][n];  //原來狀態
        while(k>0)
        {
           s1.Insert("T" + AnsiString(StatusSpace[k][n+1]+1) + "-->" , 0);
           k =  StatusSpace[k][n];
        }
        s1.Insert("狀態:U" + AnsiString(i) + ">>", 0);
        NewItem->Caption = s1;
        AnsiString s2;
        for(int x=0; x<n; x++)  s2 = s2 + AnsiString(StatusSpace[i][x]) + "--";
        NewItem->SubItems->Add(s2);
    }

    
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
      for(int i=0; i<m; i++)
      {
         delete LabelIn[i];
         delete LabelOut[i];
         for(int j=0; j<n; j++)
         {
              delete EditIn[i][j];
              delete EditOut[i][j];
         }
      }

      for(int i=0; i<n; i++)
      {
         delete LabelPlaceIn[i];
         delete LabelPlaceOut[i];
         delete LabelPlaceToken[i];
         delete EditToken[i];

      }
}
//---------------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲第一二三四区| 91视频一区二区| 99在线精品一区二区三区| 欧美三级视频在线| 国产精品少妇自拍| 免费在线观看日韩欧美| 91免费版pro下载短视频| 日韩欧美一区二区免费| 一区二区三区av电影 | 97se亚洲国产综合自在线不卡| 欧美丝袜自拍制服另类| 亚洲欧洲一区二区在线播放| 国产在线视频不卡二| 欧美亚洲日本国产| 亚洲国产高清在线| 久久成人av少妇免费| 在线观看欧美精品| 亚洲日本va在线观看| 国产精品88av| 精品久久99ma| 美女视频网站久久| 欧美日韩成人综合| 亚洲电影你懂得| 日本二三区不卡| 亚洲欧美另类小说视频| 成人黄色软件下载| 欧美国产1区2区| 国产sm精品调教视频网站| 精品播放一区二区| 国产精品综合一区二区三区| 4438亚洲最大| 免费看日韩精品| 欧美成人女星排行榜| 老司机一区二区| 欧美一区二区三区四区在线观看| 亚洲国产精品久久不卡毛片| 欧美日韩亚洲综合一区二区三区| 一区二区在线电影| 欧美曰成人黄网| 亚洲国产日日夜夜| 91精品国产色综合久久不卡蜜臀 | 欧美色图免费看| 午夜免费欧美电影| 日韩一区二区免费在线电影| 日韩和欧美的一区| 欧美zozozo| 国产精品亚洲午夜一区二区三区 | 欧美一区二区三区色| 日本免费新一区视频| wwwwww.欧美系列| 国产不卡免费视频| 亚洲人成网站在线| 91精品免费观看| 久草热8精品视频在线观看| 精品91自产拍在线观看一区| 国产精品综合久久| 亚洲人成亚洲人成在线观看图片| 在线精品观看国产| 男男gaygay亚洲| 国产日韩亚洲欧美综合| 99久久精品一区| 午夜精品福利一区二区蜜股av| 69堂成人精品免费视频| 国产美女在线观看一区| 亚洲人亚洲人成电影网站色| 欧美精品1区2区3区| 国产不卡视频一区二区三区| 亚洲制服丝袜在线| 久久免费的精品国产v∧| 99久久精品国产毛片| 日本女人一区二区三区| 国产精品欧美极品| 91精选在线观看| 不卡的av中国片| 日韩制服丝袜先锋影音| 中文字幕巨乱亚洲| 欧美久久久久免费| 成人黄色大片在线观看| 免费美女久久99| 一区二区免费看| 久久精品亚洲国产奇米99| 欧美性猛交xxxxxx富婆| 国产在线看一区| 日韩av一二三| 夜夜嗨av一区二区三区中文字幕| 久久久久久久久久久久电影| 欧美三日本三级三级在线播放| 国产精品66部| 日本不卡一区二区| 亚洲一区二三区| 国产精品久久影院| 精品国产一区二区三区忘忧草| 在线一区二区观看| www.欧美精品一二区| 精品中文av资源站在线观看| 亚洲一区在线免费观看| 最新欧美精品一区二区三区| 日韩精品中文字幕一区二区三区 | 不卡电影免费在线播放一区| 国产在线精品不卡| 日韩影院免费视频| 亚洲aⅴ怡春院| 亚洲福利一二三区| 亚洲色图制服丝袜| 国产精品国产三级国产三级人妇| 精品日韩一区二区三区| 91精品国产综合久久久久久久| 色噜噜久久综合| 91免费国产在线| av不卡在线观看| kk眼镜猥琐国模调教系列一区二区 | 久久成人av少妇免费| 欧美aⅴ一区二区三区视频| 首页综合国产亚洲丝袜| 亚洲国产日韩一区二区| 亚洲福利视频三区| 亚洲国产乱码最新视频| 亚洲风情在线资源站| 婷婷亚洲久悠悠色悠在线播放| 亚洲成人自拍偷拍| 日韩精品欧美精品| 欧美a级一区二区| 久久99热狠狠色一区二区| 美女任你摸久久| 韩国欧美国产1区| 国产精品一级在线| www.66久久| 色猫猫国产区一区二在线视频| 欧美性极品少妇| 欧美一级精品在线| 久久影院午夜论| 国产精品久久久久久久午夜片| 国产精品全国免费观看高清| 亚洲日本电影在线| 香蕉久久一区二区不卡无毒影院 | 一区二区三区日韩在线观看| 亚洲第一狼人社区| 另类综合日韩欧美亚洲| 国产精品一区二区三区乱码| 成人ar影院免费观看视频| 99久久99久久精品免费看蜜桃| 91麻豆国产福利在线观看| 欧美伊人精品成人久久综合97 | 91国偷自产一区二区三区成为亚洲经典| 91色视频在线| 欧美日韩夫妻久久| 久久久精品黄色| 亚洲精品高清在线观看| 免费人成黄页网站在线一区二区| 国产精品一级片| 欧美三级欧美一级| 国产亚洲精品aa午夜观看| 亚洲精品亚洲人成人网| 免费日本视频一区| 91在线观看视频| 日韩免费在线观看| 亚洲精品美腿丝袜| 麻豆成人av在线| 91在线精品一区二区| 欧美一区二区三区白人| 国产精品久久久久影院色老大| 石原莉奈一区二区三区在线观看 | 午夜精彩视频在线观看不卡| 国产激情一区二区三区桃花岛亚洲| 99v久久综合狠狠综合久久| 91麻豆精品久久久久蜜臀| 国产精品妹子av| 麻豆91免费观看| 色8久久精品久久久久久蜜| 久久天天做天天爱综合色| 一区二区三区四区亚洲| 国产精品伊人色| 欧美精品丝袜中出| 亚洲欧美激情在线| 国产精品一级在线| 日韩欧美的一区| 午夜精品久久久久久久99樱桃| 国产一区二区三区免费在线观看| 色天使久久综合网天天| 国产欧美日韩综合精品一区二区| 石原莉奈一区二区三区在线观看| 99re视频精品| 国产精品美女久久久久久久久| 麻豆精品久久精品色综合| 欧美午夜免费电影| 亚洲人精品一区| 91在线精品一区二区三区| 国产欧美日韩三区| 狠狠色丁香久久婷婷综| 日韩一区二区三区观看| 亚洲一区av在线| 色婷婷综合久久久中文字幕| 国产免费久久精品| 大美女一区二区三区| 欧美一二三在线| 香蕉成人伊视频在线观看| 国产精品综合一区二区| 在线精品亚洲一区二区不卡| 悠悠色在线精品| 在线观看视频一区二区欧美日韩|