⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tringdlg.h

📁 四元图灵机程序
💻 H
字号:
// tringDlg.h : header file
//

#if !defined(AFX_TRINGDLG_H__E58EFF7F_614F_4FF4_8398_598FC480DFC3__INCLUDED_)
#define AFX_TRINGDLG_H__E58EFF7F_614F_4FF4_8398_598FC480DFC3__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

/////////////////////////////////////////////////////////////////////////////
// CTringDlg dialog
class CState;
class CTuple;
#include <afxtempl.h>
class COperate
{
private:
	CString input;
	int flag;//flag=-1 left;  flag=1 right; flag=0 set
	CString output;
	CState *next_state;
public:
	COperate(CTuple tuple);
	~COperate(){};
	void set_input(CString str){input=str;}
	void set_flag(int l){flag=l;}
	void set_output(CString a){output=a;}
	void set_net_state(CState *next){next_state=next;}
	CString get_input(){return input;}
	CState *get_next_state(){return next_state;}
	int get_flag(){return flag;}
	CString get_output(){return output;}
};
class CState
{
private:
	CString state;
	CList<COperate *,COperate*> list;
	CPoint point;
	int level;
public:
	CState(){point.x=9999;point.y=9999;};
	~CState(){};
	CString get_state(){return state;}
	void set_state(CString str){state=str;}
	CList<COperate *,COperate*> *get_list(){return &list;}
	COperate *find_next_state(CString str);
	void draw(CDC *dc);
	void set_point(CPoint x){point=x;};
	CPoint get_point(){return point;}
	bool is_point_seted();
	void set_level(int x){level=x;};
	int get_level(){return level;}
	void DeleteAll();
};
class CTuple
{
private:
	CString state;
	CString input;
	int flag;//flag=-1 left;  flag=1 right; flag=0 set
	CString output;
	CString next_state;
public:
	CTuple(){};
	~CTuple(){};	
	void set_state(CString str){state=str;}
	void set_input(CString a){input=a;}
	void set_flag(int tras){flag=tras;}
	void set_output(CString a){output=a;}
	void set_next_state(CString str){next_state=str;}
	int cmp(CTuple tmp);
	CString get_state(){return state;}
	CString get_input(){return input;}
	int get_flag(){return flag;}
	CString get_output(){return output;}
	CString get_next_state(){return next_state;}
	void copy(CTuple tuple);
	
};
class CGrid
{
private:
	char tape[20];
	int left_tape;
	CString four_team;
	CState g_state[100];
	int len_state;
	CString start_state;
	int start_state_index;
	CString input_tape;	
	CString old_input_tape;
	int tape_index;
	int tape_index_lasttime;
	bool run_over;
	int current_state;
	int next_state;
	int graph_flag;
	int NumStep;
public:
	CGrid();
	~CGrid(){};
	void ReSet();
	void input(CString str){four_team=str;}
	void set_input(CString str){input_tape=str;initial_tape(left_tape);synchronization();}
	void trans_state();
	void trans_state(CString str,CTuple &state);
	CString get_string(CString str,int len);
	CString get_string(){return input_tape;}
	void check_tuple(CTuple tuple[],int &len);
	int tuple_state(CTuple tuple[],int len_tuple,CState state[]);
	int get_state_index(CTuple tuple,CState state[],int len);
	int get_num_state(CTuple tuple[],int len_tuple,CState state[]);
	void insert_line(CTuple tuple,CState* state,int num_state);
	int string_int(CString str);
	void set_tape();
	void set_start_state(CString str){start_state=str;}
	void run(CDC *dc);
	int find_index_of_state(CState *local);
	void set_four_team(CString str);
	void draw(CDC *dc);
	void initial_tape(int i);
	bool get_run_over(){return run_over;}
	void draw_tape(CDC *dc);
	void draw_box(CDC *dc);
	void draw_graph_state(CDC *dc);
	void layout_state_y(CState *x,int top,int bottom,int level);
	void layout_state_x();
	void modify_tape(COperate *x);
	void reset();
	CString get_input_tape(){return input_tape;}
	void display_state(CDC *dc);
	void display_state(CDC *dc,CState *t);
	void draw_line(CDC *dc,CState *head);
	void draw_line(CDC *dc);
	void draw_line(CDC *dc,CState *head,CList<COperate *,COperate*> *mylist);
	bool is_head_tail_same(COperate p1,COperate p2);
	void draw_arrow(CDC *dc,CPoint start,CPoint end,COLORREF color);
	void draw_state(CDC *dc);
	void draw_grid(CDC *dc);
	void clear(CDC *dc);
	void DeleteAll();
	int GetNumStep(){return NumStep;};
	void synchronization(){old_input_tape=input_tape;}
	void feedback(){input_tape=old_input_tape;};

};
class CTringDlg : public CDialog
{
// Construction
public:
	CTringDlg(CWnd* pParent = NULL);	// standard constructor
	CGrid grid;
	CString tape;
	CString start_state;
	int flag;
	int maxstep;

// Dialog Data
	//{{AFX_DATA(CTringDlg)
	enum { IDD = IDD_TRING_DIALOG };
	CString	m_input;
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CTringDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
	//}}AFX_VIRTUAL
	void draw_grid(CPaintDC *dc);
	CString modify(CString str);

// Implementation
protected:
	HICON m_hIcon;

	// Generated message map functions
	//{{AFX_MSG(CTringDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
	afx_msg void OnTimer(UINT nIDEvent);
	afx_msg void OnRun();
	afx_msg void OnSetTape();
	afx_msg void OnMenuitem32771();
	afx_msg void OnFileOpen();
	afx_msg void OnRunStep();
	afx_msg void Onreset();
	afx_msg void OnFileSave();
	afx_msg void OnHelp();
	afx_msg void OnMaxStep();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
private:
	CString int_string(int lo);
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_TRINGDLG_H__E58EFF7F_614F_4FF4_8398_598FC480DFC3__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -