識別浮點常量問題

2021-09-27 02:31:47 字數 2007 閱讀 4577

識別浮點常量問題

time limit: 1000 ms memory limit: 65536 kib

problem description

編譯器在對程式進行編譯之前,首先要進行語法分析。通常,程式被分解成若干個小單元,然後和語言的語法模式進行匹配。在分析表示式的時候,變數的型別在變數宣告的時候就決定了;而常量的型別需要從常量的形式來判斷。

假設你是自動編譯器(acm)開發小組的一員,負責pascal語言編譯器的開發。你的任務是分析程式分解模組送來的檔案,判斷其中包含的字串是否合乎語法的pascal浮點常量。

pascal語言對浮點常量的語法要求是:乙個浮點常量除了十進位制數碼之外,必須帶有乙個小數點或乙個指數(緊接在字母e或e之後,在正式文件中也被稱為比例因子)。如果該浮點常量含有小數點,則在小數點兩側都至少要有乙個十進位制數碼。當然,在整個浮點常量或指數之前,也許會出現符號+或-。指數不能包含小數。空格也許會出現在浮點常量的前後,但不會出現在浮點常量中間。

請注意pascal語言的語法規則沒有對浮點數常量的取值範圍作出任何假定。

input

輸入只有一行,就是有待識別的字串。字串的長度不超過255。

output

請將分析的結果按以下樣例的格式輸出。如果輸入檔案中的字串是pascal浮點常量,請輸出字串「yes」,否則輸出字串「no」。

sample input

1.2sample output

yeshint

輸入:1                                             輸出:no 

輸入:1.0e-55 輸出:yes

輸入:e-12 輸出:no

輸入:1e-12 輸出:yes

輸入:6.5e 輸出:no

輸入:+4.1234567890e-9999 輸出: yes

這裡介紹幾個可能還沒有太接觸過的函式

isdigit是計算機c(c++)語言中的乙個函式,主要用於檢查其引數是否為十進位制數字字元。

find_first_of()和 find_last_of():

int find_first_of(char c, int start = 0):

查詢字串中第1個出現的c,由位置start開始。

如果有匹配,則返回匹配位置;否則,返回-1.預設情況下,start為0,函式搜尋

整個字串.

int find_last_of(char c):

查詢字串中最後乙個出現的c。有匹配,則返回匹配位置;否則返回-1.

該搜尋在字元末尾查詢匹配,所以沒有提供起始位置。

erase()函式

用於在順序型容器中刪除容器的乙個元素,有兩種函式原型,c.erase(p),c.erase(b,e);

第乙個刪除迭代器p所指向的元素,第二個刪除迭代器b,e所標記的範圍內的元素,

c為容器物件,返回值都是乙個迭代器,該迭代器指向被刪除元素後面的元素(這個是重點)

識別浮點常量問題

time limit 1000ms memory limit 65536kb submit statistic problem description 編譯器在對程式進行編譯之前,首先要進行語法分析。通常,程式被分解成若干個小單元,然後和語言的語法模式進行匹配。在分析表示式的時候,變數的型別在變數宣...

識別浮點常量問題

time limit 1000ms memory limit 65536kb submit statistic problem description 編譯器在對程式進行編譯之前,首先要進行語法分析。通常,程式被分解成若干個小單元,然後和語言的語法模式進行匹配。在分析表示式的時候,變數的型別在變數宣...

識別浮點常量問題

time limit 1000 ms memory limit 65536 kib problem description 編譯器在對程式進行編譯之前,首先要進行語法分析。通常,程式被分解成若干個小單元,然後和語言的語法模式進行匹配。在分析表示式的時候,變數的型別在變數宣告的時候就決定了 而常量的型...