zoukankan      html  css  js  c++  java
  • codevs 计算器的改良

    #include<iostream>
    #include<cctype> 
    #include<vector>
    #include<cstdio>
    using namespace std;
    
    // 
    int get_num(string s)
    {
        int sum=0;
        for(int i=0;i<s.length();i++)
        {
            int k=s[i]-'0';
            sum=sum*10+k;
        }
        //cout<<sum<<endl;
        return sum;
    }
    
    int main()
    {
        string s="6a-5+1=2-2a";
        cin>>s;
        vector<string> s0;
        //第一步,实现分离 
        char ch;
        int loc=0;
        for(int i=1;i<s.length();i++)
        {
            if(s[i]=='=')
            {
                s0.push_back(s.substr(loc,i-loc));
                s0.push_back("=");
                loc=i+1;
            }
            else if(s[i]=='+'||s[i]=='-')
            {
                string tmp=s.substr(loc,i-loc);
                s0.push_back(tmp);
                loc=i;
            }
        } 
        s0.push_back(s.substr(loc,s.length()-loc));
        //for(int i=0;i<s0.size();i++)
        //    cout<<s0[i]<<endl;
        //分离后的计算
        int x=0,c=0;
        int f=1;
        for(int i=0;i<s0.size();i++){
            if(s0[i]=="=")
            {
                f=-1;
                continue;
            }
            int kt=s0[i].length();
            if(isalpha(s0[i][kt-1])){
                ch=s0[i][kt-1];
                if(s0[i][0]=='-')
                    x-=f*get_num(s0[i].substr(1,kt-2));
                else if(s0[i][0]=='+')
                    x+=f*get_num(s0[i].substr(1,kt-2));
                else x+=f*get_num(s0[i].substr(0,kt-1));
            }    
            else
            {
                if(s0[i][0]=='-')
                    c+=f*get_num(s0[i].substr(1,kt));
                else if(s0[i][0]=='+')
                    c-=f*get_num(s0[i].substr(1,kt));
                else c-=f*get_num(s0[i].substr(0,kt));                
            }
        }
        //cout<<x<<endl;
        //cout<<c<<endl;
        printf("%c=%.3f",ch,c*1.0/x);
        return 0;
    }

    一道很简单的题目,但是花了超级多的时间。

    http://codevs.cn/problem/1015/

    情况很多要依次处理,我是先把他们拆开打散,然后做相应的处理。

     主要用到了C++ STL 中的string数据结构类型

  • 相关阅读:
    最深叶节点的最近公共祖先
    ML-Agents(十)Crawler
    ML-Agents(九)Wall Jump
    ML-Agents(八)PushBlock
    ML-Agents(七)训练指令与训练配置文件
    Unity Editor扩展编辑器中显示脚本属性
    ML-Agents(六)Tennis
    数据结构(二)—栈
    ML-Agents(五)GridWorld
    ML-Agents(四)3DBall补充の引入泛化
  • 原文地址:https://www.cnblogs.com/hxh88/p/9249566.html
Copyright © 2011-2022 走看看