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

📄 getnum.cpp

📁 这是一个实数分析程序
💻 CPP
字号:
#include <iostream>
#include <ctype.h>
#include <stdlib.h>
#include <string>
using namespace std;
const int MAXSIZE = 20;
enum state{ s0, s1, s2, s3, s4, s5, s6, s7};
char accept[MAXSIZE];
int index = 0;
char * check(){
    index = 0;
    state sta = s0;
    char c;
    while(c = getchar()){
        if(sta == s0){
            if(isdigit(c)){
                sta = s1; accept[index++] = c;
            }else if(c == '+' || c == '-'){
                sta = s2; accept[index++] = c;
            }else if(c == '.'){
                sta = s3; accept[index++] = c;
            }else{
                sta = s0; cout<<"syntax error"<<endl;
                break;
            }
        }else if(sta == s1){
            if(isdigit(c)){
                sta = s1; accept[index++] = c;
            }else if(c == 'E'){
                sta = s5; accept[index++] = c;
            }else if(c == '.'){
                sta = s4; accept[index++] = c;
            }else{
                sta = s0; //ungetchar(c);
                break;
            }
        }else if(sta == s2){
            if(isdigit(c)){
                sta = s1; accept[index++] = c;
            }else if(c == '.'){
                sta = s3; accept[index++] = c;
            }else{
                sta = s0; cout<<"syntax error"<<endl;
                break;
            }

        }else if(sta == s3){
            if(isdigit(c)){
                sta = s4; accept[index++] = c;
            }else{
                sta = s0; cout<<"syntax error"<<endl;
                break;
            }
        }else if(sta == s4){
            if(toupper(c) == 'E'){
                sta = s5; accept[index++] = c;
            }else if(isdigit(c)){
                sta = s4; accept[index++] = c;
            }else{
                sta = s0; //ungetchar(c);
                break;
            }

        }else if(sta == s5){
            if(isdigit(c)){
                sta = s7; accept[index++] = c;                
            }else if(c == '+' || c == '-'){
                sta = s6; accept[index++] = c;
            }else{
                sta = s0; cout<<"syntax error"<<endl;
                break;
            }
        }else if(sta == s6){
            if(isdigit(c)){
                sta = s7; accept[index++] = c;
            }else{
                sta = s0; cout<<"syntax error"<<endl;
            }            
        }else if(sta == s7){
            if(isdigit(c)){
                sta = s7; accept[index++] = c;
            }else{
                sta = s0;  //ungetchar(c);
                break;
            }
        }
    }
    return accept;
}

int main()
{   
    while(true){
        cout<<">>";
        check();   
        accept[index] = '\0';
        cout<<"index: "<<index<<endl;
        cout<<"accept: "<<accept<<endl;
        cout<<endl;
        cout<<atof(accept)<<endl;
    }
}


    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -