当前位置: 首页 > news >正文

B -识别浮点常量问题

B - 识别浮点常量问题

Description

编译器在对程序进行编译之前,首先要进行语法分析。通常,程序被分解成若干个小单元,然后和语言的语法模式进行匹配。在分析表达式的时候,变量的类型在变量声明的时候就决定了;而常量的类型需要从常量的形式来判断。

假设你是自动编译器(ACM)开发小组的一员,负责Pascal语言编译器的开发。你的任务是分析程序分解模块送来的文件,判断其中包含的字符串是否合乎语法的Pascal浮点常量。

Pascal语言对浮点常量的语法要求是:一个浮点常量除了十进制数码之外,必须带有一个小数点或一个指数(紧接在字母e或E之后,在正式文档中也被称为比例因子)。如果该浮点常量含有小数点,则在小数点两侧都至少要有一个十进制数码。当然,在整个浮点常量或指数之前,也许会出现符号+或-。指数不能包含小数。空格也许会出现在浮点常量的前后,但不会出现在浮点常量中间。

请注意Pascal语言的语法规则没有对浮点数常量的取值范围作出任何假定。

Input

输入只有一行,就是有待识别的字符串。字符串的长度不超过255。

Output

请将分析的结果按以下样例的格式输出。如果输入文件中的字符串是Pascal浮点常量,请输出字符串“YES”,否则输出字符串“NO”。

Samples

Sample #1

Input 
Output 
1.2
YES
#include<bits/stdc++.h>
using namespace std;
int main() {string s;getline(cin, s);int len = s.size();int cnte = 0, dian = 0;int isp = 1;for (int i = 0; i < len; i++) {if (s[i] == 'E' || s[i] == 'e') {cnte++;if (i == 0 || i == len - 1) isp = 0;else if (!isdigit(s[i - 1])) isp = 0;else {for (int j = i + 1; j < len; j++) {if (s[j] == '.') isp = 0;}}} else if (s[i] == '.') {dian++;if (i == 0 || i == len - 1) isp = 0;if (!isdigit(s[i - 1]) || !isdigit(s[i + 1])) isp = 0;} else if (s[i] == '+' || s[i] == '-') {if ((i == 0 || s[i - 1] == 'e' || s[i - 1] == 'E') && (i < len && isdigit(s[i + 1]))) ;else isp = 0;} else if (!isdigit(s[i])) {isp = 0;}}if (cnte == 0 && dian == 0) cout << "NO" << endl;else if (cnte > 1 || dian > 1 || isp == 0) cout << "NO" << endl;else cout << "YES" << endl;return 0;
}

 

http://www.rkmt.cn/news/19508.html

相关文章:

  • 小C语言--词法分析程序-A
  • IS-IS核心解析:驱动现代网络的隐形力量 - 教程
  • 梳理一下Java中为保证线程安全提供了那些方案 - 浪矢
  • 处理Git错误:“invalid object [hash]”和“unable to read tree [hash]”
  • raspberry + pycharm failed
  • 基于OpenEuler--docker容器化部署ceph集群 - 实践
  • 2025年新型振动电机厂家权威推荐榜:创新技术与高效性能深度
  • 2025钢衬塑储罐厂家最新权威推荐榜:耐腐性能与结构强度双优
  • 2025大棕拉链厂家权威推荐榜:品质工艺与创新设计深度解析
  • NOIP2016普及组port
  • 从增长焦虑到经营确定性:巨益OMS业财一体化的实践路径
  • Alexa对话式AI技术进展全解析
  • AI小说生成器:智能创作与一致性维护的全流程解决方案
  • 2025年10月广州 1688 代运营服务商推荐,阿里巴巴1688店铺代运营、全店托管代运营公司推荐!
  • 2025拉伸器厂家最新权威推荐榜:技术实力与市场口碑深度解析
  • 实用指南:Linux动静态库
  • Java的一些细节
  • ABC427
  • 从 EFI 到 GPT:深入理解现代计算机启动与磁盘分区技能
  • 想在浏览器里跑 AI?TensorFlow.js 硬件帮助完全指南
  • CSharp: image (JPG,PNG,etc) covert webp using Aspose.Imaging
  • 2025耐磨轮胎厂家最新权威推荐榜:超强抓地力与持久耐用深度
  • 在Vue 3项目中集成Element Plus组件库的步骤
  • pytorch报告
  • IntelliJ IDEA / Android Studio 里直接跑 Cursor(不用来回切窗口) - 教程
  • 2025管件厂家最新权威推荐榜:技术实力与市场口碑深度解析
  • 投票
  • 2025防震气柱袋厂家权威推荐榜:抗震防护与品质口碑深度解析
  • 当代世界数字化转型与人工智能应用
  • 实用指南:【Linux】深入理解Linux的进程(一)