如何做一个无符号数识别程序

news2024/11/14 22:21:25

1.状态分析

我们可以把无符号数分为:整数,带小数,带指数部分三种形式。以此构建一个DFA。首先需识别输入是整数还是小数点,若是整数部分输入然后还要再循环识别一次是否有小数点,最后识别是否有指数部分,指数部分可以带有符号。

2.画出状态图

下图种d代表整数,不在状态图中的情况则表示这不是无符号数

3.构造状态矩阵

状态图种不存在的情况则标为-1

.E/e+/-dother
03-1-1-1-1
124-11-1
2-14-12-1
3-1-1-12-1
4-1-156-1
5-1-1-16-1
6-1-1-16-1

4.程序实现

#include <iostream>
#include <string>
using namespace std;

// 状态转换表0: . 1: e 2: + or - 3: 0-9 4: other
int state[7][5] = {
    {3, -1, -1, 1, -1},
    {2, 4, -1, 1, -1},
    {-1, 4, -1, 2, -1},
    {-1, -1, -1, 2, -1},
    {-1, -1, 5, 6, -1},
    {-1, -1, -1, 6, -1},
    {-1, -1, -1, 6, -1}
};
int allend[3] = {1, 2, 6}; //可以结束的状态

int judge(char change) {
    if (change == '.') return 0;
    else if (change == 'E' || change == 'e') return 1;
    else if (change == '+' || change == '-') return 2;
    else if (change >= '0' && change <= '9') return 3;
    else return 4;
} //跳转函数

int isend(int now) {
    for (int i = 0; i < 3; i++) {
        if (now == allend[i]) return 1;
    }
    return 0;
} // 判断是否为结束状态

int main() {
    string s;
    while (cin >> s) {
        int now = 0;
        for (int i = 0; i < s.length(); i++) {
            cout << now << "->";
            int index = judge(s[i]);
            now = state[now][index];
            cout << now << endl;
            if (now == -1) break; // 发现不是无符号数
        }
        if (isend(now) == 1) cout << "yes\n";
        else cout << "no\n";
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1133940.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux程序地址空间

Tips: 之后的博客以记录笔记为主了 文章目录 0.前言历史遗留进程独立性 2. 地址空间是什么2.1 地址空间2.2 地址空间的区域划分 3. 页表4. 为什么要有进程地址空间 0.前言 历史遗留 #include<stdio.h> #include<stdlib.h>int g_val1; int g_val2 10;int main() …

如何提高app的广告变现能力?

对于中小型app&#xff0c;开发者在开发app之前&#xff0c;更应该考虑清楚app商业化的方向。 广告总收入A广告位收入B广告位收入C广告位收入...n广告位收入 单个广告位收入广告请求*广告填充率*广告展示率*eCPM/1000 1、找准用户质量 广告投放核心的指标是roi&#xff0c;…

【用一张动图解释 8 种常用网络协议】

网络协议就是计算机之间沟通的语言&#xff0c;为了有效地交流&#xff0c;计算机之间需要一种共同的规则或协议&#xff0c;就像我们和老外沟通之前&#xff0c;要先商量好用哪种语言&#xff0c;要么大家都说中文&#xff0c;要么大家都说英语&#xff0c;这才能有效地沟通。…

【CSS】伪类和伪元素

伪类 :hover&#xff1a;悬停active&#xff1a;激活focus&#xff1a;获取焦点:link&#xff1a;未访问&#xff08;链接&#xff09;:checked&#xff1a;勾选&#xff08;表单&#xff09;first-child&#xff1a;第一个子元素nth-child()&#xff1a;指定索引的子元素&…

40.查找练习题(王道2023数据结构第7章)

试题1&#xff08;王道7.2.4节综合练习5&#xff09;&#xff1a; 写出折半查找的递归算法。 #include<stdio.h> #include<stdlib.h> #include<string.h>#define MAXSIZE 10 #define ElemType int #define Status inttypedef struct{int data[MAXSIZE]; /…

单例模式详解【2023年最新】

一、单例模式概念 单例模式是一种创建型设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点来访问该实例。它的目的是限制一个类只能创建一个对象&#xff0c;以确保在整个应用程序中只有一个共享的实例。 单例模式通常用于以下情况&#xff1a;…

服务容错框架Sentinel入门

概述 Sentinel&#xff0c;阿里开源的一套用于服务容错的综合性解决方案。它以流量为切入点&#xff0c;从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。分布式系统的流量防卫兵。 特征: 丰富的应用场景&#xff1a;秒杀&#xff08;即突发流量控制在系统…

物联网AI MicroPython传感器学习 之 GP2Y10粉尘传感器

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; 一、产品简介 GP2Y10粉尘传感器用于检测非常细的空气漂浮颗粒物&#xff0c;主要用于空气净化系统中&#xff0c;传感器外观引脚如下图所示。 引脚定义 GND&#xff1a;地VCC&#xff1a;5VLED&#xff1a…

Dos和DDos攻击

Dos Denialof Service拒绝服务,利用程序漏洞或一对一资源耗尽的&#xff0c;攻击有计算机网络宽带攻击和连通性攻击 分类&#xff1a; D网络&#xff1a;耗尽目标网络带宽资源 如&#xff1a;ICMP Flood, UDP Flood D协议&#xff1a;攻击协议漏洞发起的拒绝服务攻击 如…

Leetcode—17.电话号码的字母组合【中等】

2023每日刷题&#xff08;九&#xff09; Leetcode—17.电话号码的字母组合 回溯法解题 实现代码 class Solution { public:vector<string> table {"","","abc","def","ghi","jkl","mno",&quo…

leetCode 283 移动零

//right指向待处理序列的首部 //left指向处理后序列的尾部class Solution {public void swap(int[] nums, int left, int right){int tmp nums[left];nums[left] nums[right];nums[right] tmp;}public void moveZeroes(int[] nums) {int n nums.length;int left 0;int rig…

Oracle(6) Control File

一、oracle控制文件介绍 1、ORACLE控制文件概念 Oracle控制文件是Oracle数据库的一个重要元素&#xff0c;用于记录数据库的结构信息和元数据。控制文件包含了数据库的物理结构信息、数据字典信息、表空间和数据文件的信息等。在Oracle数据库启动时&#xff0c;控制文件会被读…

【c#】2022创建WEB API接口教程demo

c#创建WEB API接口 创建WEB API接口结果图涉及到的技术设计流程创建WEB API接口 结果图 涉及到的技术 设计流程 1、创建WEB api项目,使用控制器和penapi勾选上,第一次创建项目时没有勾选,因为感觉没啥用。后面跑项目的时候,要把接口用swagger去直接生成的时候,还是需要…

新的抓包神器,完全免费,支持多平台!

目前IOS端的抓包软件&#xff1a; HTTP Catcher&#xff08;网球&#xff09;&#xff0c;免费下载&#xff0c;完整版需要内购。 Storm Sniffer&#xff08;螃蟹&#xff09;&#xff0c;免费下载&#xff0c;完整版需要内购。 Thor&#xff08;锤子&#xff09;&#xff0…

安全设备

一.防火墙 5层应用层 防火墙 4层 udp tcp 协议 华为 厂商 华为 h3 1.区域划分 Dmz 停火区 Untrust 不安全区域 Trust 安全区域 防火墙 默认禁止所有 二.Waf Web 应用防火墙 放到web前面 产品 雷池 绿盟 软件 安…

proxy解决跨域问题

在使用vite工具创建的项目中解决跨域问题&#xff1a; 在vue.config.js中配置如下代码&#xff1a; const { defineConfig } require(‘vue/cli-service’) module.exports defineConfig({ transpileDependencies: true, server:{ proxy:{ ‘/path’:{ target:‘https://i.…

21 行为型模式-职责链模式

1 职责链模式介绍 2 职责链模式原理 3 职责链模式实现 责任链模式的实现非常简单&#xff0c;每一个具体的处理类都会保存在它之后的下一个处理类。当处理完成后&#xff0c;就会调用设置好的下一个处理类&#xff0c;直到最后一个处理类不再设置下一个处理类&#xff0c;这时…

美团悄悄上线社群团购“团买买”

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 之前有社交电商&#xff1a;群买买、快团团、群团团、京喜团&#xff0c;而最近美团也上线了一款社群团购工具“团买买”的小程序。看来今年社群团购赛道非常热门啊&#xff0c;美团的“团买买”对…

【JAVA学习笔记】44 - 注解,元注解

项目代码 一、注解的引入 1)注解(Annotation)也被称为元数据(Metadata),用于修饰解释包、类、方法、属性、构造器、局部变量等数据信息。 2)和注释一样&#xff0c;注解不影响程序逻辑&#xff0c;但注解可以被编译或运行&#xff0c;相当于嵌入在代码中的补充信息。 3)在Ja…

回归预测 | MATLAB实现BO-BiLSTM贝叶斯优化双向长短期神经网络多输入单输出回归预测

回归预测 | MATLAB实现BO-BiLSTM贝叶斯优化双向长短期神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现BO-BiLSTM贝叶斯优化双向长短期神经网络多输入单输出回归预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 MATLAB实现BO-BiLSTM贝叶斯优化双向长…