注册 登录
编程论坛 C++教室

今天写了个小程序 很爽

shining小南 发布于 2010-11-06 10:29, 2902 次点击
和参考程序还是有很大差距,呵呵,初学者自己写的,一调就通过了,很爽
(用$表示一次撤销,用%表示一次保存,用*表示一次电脑重新启动,
用#表示输入结束并保存。请输出保存下来的所有文字。如果没有任何文字被保存下
 来,则输出Nothing)
#include <vector>
#include <iostream>
using namespace std;
int main()
{
    vector<char> stack(0);/
    char temp;
    int Lastsize;
    cout <<"请输入指令(以\'#\'结束):" <<endl;
    do
    {
        cin >>temp;
        if (temp!='#')
        {
            switch(temp)
            {
            case '$':
                {
                    stack.pop_back();
                    Lastsize=stack.size();
                    break;
                }
            case '%':
                {
                    Lastsize=stack.size();
                    break;
                }
            case '*':
                {
                    for(int i=stack.size();i>Lastsize;i--)
                        stack.pop_back();
                    break;
                }
            default:stack.push_back(temp);
            }
        }
    }while(temp!='#');
    if (stack.size()==0)
    {
        cout<<"Nothing"<<endl;
    }
    else
    {
        for (int i=0;i<stack.size();i++)
            cout <<stack[i];
    }
   
    cout <<endl;
    return 0;
}
30 回复
#2
razielzyc2010-11-06 12:42
不错呀,再接再厉,我就是总遇上瓶颈。
#3
shining小南2010-11-06 16:52
细节处理的还是很不到位....
#4
pangding2010-11-06 20:21
不错不错。值得鼓励~~
#5
xin3109232010-11-06 21:17
可怜的我还是连这点小程序都写不出来   我怕继续努力把
#6
Invariably2010-11-06 21:34
很不错啊,我要多多学习!
#7
huazhao2010-11-06 21:39
问一下你那个可以直接在VC里运行吗》?
#8
huazhao2010-11-06 21:44
不用回了 我知道了 我老是用MFC去做  我看你的没窗口函数。。。。。。。。
#9
shining小南2010-11-06 21:53
呵呵 API MFC都还没看 刚看完类

#10
木头lbj2010-11-06 23:09
程序是要干什么?
#11
易中暑2010-11-10 13:47
学习下,学编程就是要多写多练
#12
su8585145582010-11-10 21:43
新手上路
#13
小品2010-11-10 22:34
我还要多多学习哈哈~~膜拜一下~
#14
肖付2010-11-10 23:48
向LZ学习。
#15
missiyou2010-11-11 17:39
/** 。。。。
*   file: CallBack.cpp
*   athuor:wxd
*   email: wxd273612158@
*/
#include<iostream>
#include<vector>
#include<string>
using namespace std;

class StrEdit
{
public:
    bool clear(char *p)
    {
        cout <<p  << ":"<< "clear" << endl;
        return false;
    }
    bool save(char *p)
    {
        cout <<p << ":"<< "save" << endl;
        return false;
    }
    bool reset(char *p)
    {
        cout <<p << ":"<< "reset" << endl;
        return false;
    }
    bool end(char *p)
    {
        cout <<p  << ":"<< "end" << endl;
        return false;
    }

private:
    //pass
    vector<string> arr;

};

class RegHandle
{
public:
    typedef bool (StrEdit::*XregFun)( char* p);
    RegHandle() {}
   
    void Rh()//注册函数
    {
        this->p[0] = &StrEdit::clear;
        this->p[1] = &StrEdit::save;
        this->p[2] = &StrEdit::reset;
        this->p[3] = &StrEdit::end;
    }
   
    void Call(int ip, char *pp)
    {
        (s.*p[ip])(pp);//回调函数
    }
   
    int IsChar(unsigned char ch)
    {
        char *p = "$%*#";
        for(int i =0; i < strlen(p); i ++)
            if(ch == p[i])
                return i;
        return -1;
    }
   
    void run()
    {
        char ch[24] = {0};
        char buf[24] = {0};
        string s;
        int map = 0;
        int cur = 0;
        cin >> ch;
        for(int i = 0; i < strlen(ch); i ++)
        {
                map = IsChar(ch[i]);
                if (map != -1)
                {
                    s.assign(ch + cur, i - cur);
                    cur = i + 1;
                    Call(map, (char*)s.c_str());
                    s.erase();
                }
               
        }
               
    }

private:

    StrEdit s;
    XregFun p[4];
};

// reg.RegFun(StrEdit::clear, 1);
// 利用的你的小程序原理与实现结果,俺写了个回调函数处理小程序!
// 输入:wang%dong%dong%waa$
// 结果:
// wang:save
// dong:save
// dong:save
// waa:clear
int main()
{
    static RegHandle reg;
    reg.Rh();
    reg.run();
    return 0;
}
#16
dominator2010-11-15 18:11
呵呵 ··我还在郁闷阶段勒··!
#17
南国利剑2010-11-15 22:08
很好
加油
#18
lucky5635912010-11-16 07:18
初学者学函数?
#19
hancycrystal2010-11-18 19:06
我也是初学者,真羡慕
#20
zy2482102522010-11-18 19:28
羡慕
我还不会编呢!!!!
#21
w5485443752010-11-21 20:33
继续学习中
#22
展翅2010-11-23 21:23
gong xi
#23
losink2010-11-24 12:25
不会做.....
#24
2010-11-25 23:20
出不学习一下!
#25
左之心2010-11-29 21:21
我也看不出程序是干什么用的!
#26
漩和你一起2010-11-29 23:25
这个程序是干什么的啊
#27
asd45652002010-12-05 14:10
学习学习!
#28
forCompu2010-12-05 15:56
我。。。我。。。我了个晕。。。
    这个好像没有什么特别的要赞扬的地方哈,不过不错,总算是可以运行的~
         楼主再接再厉@!~~~
#29
znnwe2010-12-05 20:00
入口函数是MAIN(),是控制台程序
#30
王江帆2010-12-05 23:39
我不太懂。请教下568033671
谢了
#31
l1u61n99w22010-12-09 20:01
唉,顶你楼主
1