| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 590 人关注过本帖
标题:各位如果有空可以试下优化下这段代码,呵呵!
只看楼主 加入收藏
ToBeOOP
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:106
专家分:181
注 册:2010-7-8
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:5 
各位如果有空可以试下优化下这段代码,呵呵!
程序代码:
#include <iostream>
#include <conio.h>
#include <cctype>

using namespace std;

void eatspace(char* Str);  //用于取消在输入时输入的空格.
double FirstP(char* Str);  //处理一级运算.
double SecondP(char* Str,int& index);  //处理二级运算.
double number(char* Str,int& index); //将字符串中的数字组合起来.

int main(void)
{
    const int MAX = 20;
    char Str[MAX] = {0};

    for(;;)
    {
        cin.getline(Str,MAX);  //输入字符串.

        eatspace(Str);  //调用eatspace函数.
   
        if( !Str[0] )  // 注意:( !Str )等价于 ( Str == 0 ).
            return 0;

        cout << "Reasult = " << FirstP(Str); //输出结果
    }
    _getch();
    return 0;
}
void eatspace(char* Str)  //创建eatspace函数.
{
    int a = 0;
    int b = 0;

    while( (*(Str + a ) = *(Str + b++ )) != '\0' )  // 注意:不能写成 *(Str + a ) = *(Str + b++ ) != '\0'
    {
        if( *( Str + a ) != ' ' )
            a++ ;
    }
    return;
}
double FirstP(char* Str)
{
    int index = 0;
    double value = 0.0;
   
    value = SecondP(Str,index);

    for( ; *(Str + index) != '\0'; )
    {
        switch( *(Str + index++) )
        {
            case '+' :
                value += SecondP(Str,index);
                break;
            case '-'  :
                value -= SecondP(Str,index);
                break;
            default :
                cout << endl
                        << "Warning!"
                        << endl;
        }
    }
        return value;
}
double SecondP(char* Str,int& index)  //创建SecondP函数.
{
    double value = 0.0;

    value = number(Str,index);
   
    while( (*(Str + index) == '*' ) || (*(Str + index) == '/') )
    {
        if( *(Str + index) == '*' )
        {
            index++;
            value *= number(Str,index);
        }
        else
            if( *(Str +index) == '/' )
            {
                index++;
                value /= number(Str,index);
            }
    }
    return value;
}
double number(char* Str,int& index)  //创建number函数.
{
    double value = 0.0;

    while( isdigit( *( Str + index) ) )
        value = 10 * value + ( *(Str + index++) - '0' );
    if( *(Str + index) == '.' )
    {
        index++;
        double lessen = 0.1;

        while( isdigit( *(Str + index) ) )
        {
            value += lessen * ( *(Str + index++) - '0' );
            lessen *= lessen;
        }
    }
    return value;
}
试下优化玩玩...
搜索更多相关主题的帖子: 代码 
2010-07-16 21:18
jmchang
Rank: 2
等 级:论坛游民
帖 子:16
专家分:66
注 册:2010-7-14
收藏
得分:7 
哦,我会试试用了。

[url=http://www.]抛光蜡[/url]
2010-07-17 16:35
jmchang
Rank: 2
等 级:论坛游民
帖 子:16
专家分:66
注 册:2010-7-14
收藏
得分:0 
好吧,一于试试用。

[url=http://www.]抛光蜡[/url]
2010-07-17 16:36
ToBeOOP
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:106
专家分:181
注 册:2010-7-8
收藏
得分:0 
呵呵,我自己不知道该如何提高这个的效率的....
2010-07-17 18:44
ToBeOOP
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:106
专家分:181
注 册:2010-7-8
收藏
得分:0 
自己顶一顶!
2010-07-18 11:15
gq198718
Rank: 4
等 级:业余侠客
威 望:1
帖 子:86
专家分:200
注 册:2010-6-6
收藏
得分:0 
谢谢楼主分享
2010-07-19 13:04
快速回复:各位如果有空可以试下优化下这段代码,呵呵!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018883 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved