📄 form1.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
namespace 浮点数的DFA
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/******************状态函数******************/
private int zt0(char c)
{
if (c == '+' || c == '-')
{
listBox_xs.Items.Add("状态0→1 (条件'+/-')");
return 1;
}
else if (c == '.')
{
listBox_xs.Items.Add("状态0→3 (条件'.')");
return 3;
}
else if (c >= '0' && c <= '9')
{
listBox_xs.Items.Add("状态0→2 (条件数字'"+c+"')");
return 2;
}
else return 9; //9-错误状态
}
private int zt1(char c)
{
if (c >= '0' && c <= '9')
{
listBox_xs.Items.Add("状态1→2 (条件数字'" + c + "')");
return 2;
}
else return 9;
}
private int zt2(char c)
{
if (c >= '0' && c <= '9')
{
listBox_xs.Items.Add("状态2→2 (条件数字'" + c + "')");
return 2;
}
if (c == '.')
{
listBox_xs.Items.Add("状态2→3 (条件'.')");
return 3;
}
if (c == 'e' || c == 'E')
{
listBox_xs.Items.Add("状态2→5 (条件'e/E')");
return 5;
}
else return 9;
}
private int zt3(char c)
{
if (c >= '0' && c <= '9')
{
listBox_xs.Items.Add("状态3→4 (条件数字'" + c + "')");
return 4;
}
else return 9;
}
private int zt4(char c)
{
if (c >= '0' && c <= '9')
{
listBox_xs.Items.Add("状态4→4 (条件数字'" + c + "')");
return 4;
}
if (c == 'e' || c == 'E')
{
listBox_xs.Items.Add("状态4→5 (条件'e/E')");
return 5;
}
else return 9;
}
private int zt5(char c)
{
if (c == '+' || c == '-')
{
listBox_xs.Items.Add("状态5→6 (条件'+/-')");
return 6;
}
if (c >= '0' && c <= '9')
{
listBox_xs.Items.Add("状态5→7 (条件数字'" + c + "')");
return 7;
}
else return 9;
}
private int zt6(char c)
{
if (c >= '0' && c <= '9')
{
listBox_xs.Items.Add("状态6→7 (条件数字'" + c + "')");
return 7;
}
else return 9;
}
private int zt7(char c)
{
if (c >= '0' && c <= '9')
{
listBox_xs.Items.Add("状态7→7 (条件数字'" + c + "')");
return 7;
}
else return 9;
}
/********************************************/
private bool F_DFA(string str)
{
int zt = 0;//保存状态
char[] cr=str.ToCharArray();
for (int i = 0; i < cr.Length&&zt!=9; i++)
{
switch (zt)
{
case 0: zt = zt0(cr[i]); break;
case 1: zt = zt1(cr[i]); break;
case 2: zt = zt2(cr[i]); break;
case 3: zt = zt3(cr[i]); break;
case 4: zt = zt4(cr[i]); break;
case 5: zt = zt5(cr[i]); break;
case 6: zt = zt6(cr[i]); break;
case 7: zt = zt7(cr[i]); break;
default: { listBox_xs.Items.Add(cr[i] + "发生错误!"); break; }
}
}
if (zt == 3 || zt == 4 || zt == 7)
{
listBox_xs.Items.Add(str + "可转到最终状态,是浮点数!");
return true;
}
else
{
listBox_xs.Items.Add(str + "不可转到最终状态,不是浮点数!");
return false;
}
}
private void button_t_Click(object sender, EventArgs e)
{
string str = textBox_num.Text.ToString();
listBox_xs.Items.Clear();
if (F_DFA(str) == true)
label1.Text = str + "是浮点数 分析如下:";
else
label1.Text = str + "不是浮点数 分析如下:";
}
private void button_p_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("F_DFA.JPG");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -