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

📄 form1.cs

📁 c#编写 浮点数的DFA 由自动机模式构造 内涵详细步骤
💻 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 + -