程序设计第三次作业---C++计算器雏形

  • Github链接:
  • 题目:http://www.cnblogs.com/fzuoop/p/5187275.html

第一次尝试:

我在学习完相关的C++类的知识还有STL中stack和queue的用法之后,大概捋清了题意。用不到十五分钟的时间敲出了代码1的大体,但还是由于自己对相关知识的不熟悉,修改大大小小的错误花费了我一天的时间,代码1如下。

  • 代码1:
#include<stdlib.h>
#include<iostream>
#include<string>
#include<queue>
#include<cstdio>
using namespace std;
class Scan
{
    // private section
    public:
        void ToStringQueue(string input);
};
void Scan::ToStringQueue(string input)
{
    string s;//Define a string "s",and store(存储) something by using it.
    queue<string>que;//Define a queue "que".
    int m,n,i,j,t=0;
    n=input.size();//Define int n,"n = string's length".
    for(i=0;i<n;i++)//mistake:i=1;i<=n;
    {
        if(input[i]=='-')
        {
            t=1;
            
            que.push(s);//
            s.clear();//clear s 
            
            s+=input[i];
            continue;
        }
        else
        {
            if(t==1)// '-' 
            {
                if(input[i]=='('||input[i]==')'||input[i]=='+'||input[i]=='*'||input[i]=='/')
                {
                    t=0;
                    
                    que.push(s);
                    s.clear();
                    
                    s+=input[i];
                    
                    que.push(s);//que.push(input[i]);
                    s.clear();     
                }
                else
                {
                    s+=input[i];
                    continue;
                }
            }
            else
            {
                if(input[i]=='('||input[i]==')'||input[i]=='+'||input[i]=='*'||input[i]=='/')
                {
                    que.push(s);
                    s.clear();
                    
                    s+=input[i];
                    
                    que.push(s);//que.push(s);
                    s.clear();
                }
                else
                {
                    s+=input[i];
                    continue;
                }
            }
        }
    }
    
    m=s.size();
    if(m!=0)que.push(s);//check s 
    s.clear();
    
    while(que.empty()==0)//mistake:j<n;
    {
        cout<<que.front()<<endl;
        que.pop();
    }
}

int main()
{
    int n=0,i,j;
    Scan sc;//实例化对象miss 
    string b;
    cin>>b;
    sc.ToStringQueue(b);
    return 0;
}
//example:
//-100+(98-97)*2
//-100+(98+97)*2
//100*(99-98)
//100*10+1000
//100*10-100*(98*97-1)+100
//
  • 输入样例:100*10-100*(98*97-1)+100
  • 运行结果:
    程序设计第三次作业---C++计算器雏形<unfinished>_第1张图片

  • 根据上面的测试结果,读者会发现,输出结果多了几个行,而且输出并没有按照要求放在一个类里面。

  • 为什么会多输出\n(换行符)呢,这个问题我们先放一放。

  • 关于第二个问题,代码1是我的最开始的测试代码,它用于验证我的大体思路和想法是否正确,与最后的成品相比亘长且不成熟。
    在代码1的编写过程中我遇到了大大小小的问题,下面即是我对这些问题的一个总结和反思。

问题1:

你可能感兴趣的:(程序设计第三次作业---C++计算器雏形)