注册 登录
编程论坛 意见和建议

新官上任三把火啊!一任版主即删哥的帖子

BlueGuy 发布于 2010-08-07 10:22, 2815 次点击
以下您所发表的主题被 Devil_W 执行 删除 操作。

主题: Devil_W,  哥给你写的 BigFloat
发表时间: 2010-7-20 22:07
所在论坛: 『 C语言论坛 』

操作理由: 一堆烂code



[ 本帖最后由 BlueGuy 于 2010-8-7 10:23 编辑 ]
29 回复
#2
BlueGuy2010-08-07 10:25
#include <stdio.h>
#include <string.h>
#define MAX_LEN 150
unsigned an1[MAX_LEN];
unsigned an2[MAX_LEN];
unsigned aResult[2*MAX_LEN];

char szBase1[MAX_LEN];
char szBase2[MAX_LEN];
int len1,len2;

void bgMultiply(void)
{
    int i, j;
    //每一轮都用an1的一位,去和an2各位相乘,从an1的个位开始
    for( i = 0;i < len2; i ++ )
    {     
        //用选定的an1的那一位,去乘an2的各位
        for( j = 0; j < len1; j ++ )     
            //两数第i, j位相乘,累加到结果的第i+j位
            aResult[i+j] += an2[i]*an1[j];   
    }
    //下面的循环统一处理进位问题
    for( i = 0; i < MAX_LEN-1; i ++ )
    {
        if( aResult[i] >= 10 )
        {
            aResult[i+1] += aResult[i] / 10;
            aResult[i] %= 10;
        }
    }
}
int main(void)
{
    int i,j,basePointPos1,baseDecimalDigits1,basePointPos2,baseDecimalDigits2,resultPointPos,resultEndPos,resultBeginPos;
    char* p;
    while(scanf("%s%s",szBase1, szBase2)>0)
    {
        basePointPos1 = -1;
        baseDecimalDigits1 = 0;
        memset( an1, 0, sizeof(an1));
        memset( an2, 0, sizeof(an2));
        memset( aResult, 0, sizeof(aResult));
        len1 = strlen(szBase1);
         //根据小数点位置和末尾0的出现来计算小数位数,同时计算排除末尾0后的长度  
        p = strchr(szBase1,'.');
        if(p)
        {
            basePointPos1 = p-szBase1;
            for( i = len1 - 1; szBase1[i]=='0' && i>basePointPos1; i--)
                continue;
            baseDecimalDigits1 = i-basePointPos1;
            len1 = i+1;
        }
        j = 0;
        for( i = len1 - 1;i >= 0 ; i--)
        {
            if(i==basePointPos1)
                continue;
            an1[j] = szBase1[i] - '0';
            j++;
        }
        len2 = strlen(szBase2);
        //根据小数点位置和末尾0的出现来计算小数位数,同时计算排除末尾0后的长度
        p = strchr(szBase2,'.');
        if(p)
        {
            basePointPos2 = p-szBase2;
            for( i = len2 - 1; szBase2[i]=='0' && i>basePointPos2; i--)
                continue;
            baseDecimalDigits2 = i-basePointPos2;
            len2 = i+1;
        }
        j = 0;
        for( i = len2 - 1;i >= 0 ; i--)
        {
            if(i==basePointPos2)
                continue;
            an2[j] = szBase2[i] - '0';
            j++;
        }
        
        bgMultiply();
        //计算结果中小数点应出现的位置
        resultPointPos = baseDecimalDigits1 + baseDecimalDigits2 - 1;
        
        
        //计算结果的最后一位在数组中的位置
        resultEndPos = 0;
        
        for( i = 0; aResult[i]==0 && i<resultPointPos; i++ )
            continue;
        resultEndPos = i;
        
        //计算结果的最高位在数组中的位置
        for( i = MAX_LEN-1; aResult[i]==0 && i>=0; i-- )
            continue;
        if(resultPointPos>i)
            resultBeginPos = resultPointPos;
        else
            resultBeginPos = i;
        
        
        for( i = resultBeginPos; i>=resultEndPos ; i-- )
        {
            if (resultBeginPos ==  resultEndPos)
                printf("0");
            if ( i == resultPointPos )
                printf(".");
            printf("%d", aResult[i]);
        }
        printf("\n");
    }
    return 0;
}
#3
BlueGuy2010-08-07 10:26
如果您对本管理操作有异议,请与我取得联系。
//出来给个解释, 到底烂在哪里?
#4
安普留香2010-08-07 11:24
带小数点的乘法
#5
BlueGuy2010-08-07 11:29
从中可以看出备份有多重要了。提醒大家, 写代码要多备份,
一旦发生意外,你可能就回不到从前了。
#6
南国利剑2010-08-07 11:33
到底是谁的帖子被删除了
#7
Devil_W2010-08-07 11:35
你随便把我以前贴的code拿过来看看。

哥是怎么写代码的。

我那个BigInt的代码是怎么写的。

你还给我写?搞笑。

你总共才实现了几个操作符?你能算负数?

你这段烂代码的移植性有多高?

总之一个字: 烂!
#8
BlueGuy2010-08-07 11:46
你那个啥 BigInt 根本都惨不忍睹, 另外我写代码从不参考垃圾代码.
哥这份代码本不是写给你的,只是拿你的名号换取点击率。
你这个白痴, 你管哥实现了几个操作符,哥写了乘法,自然 加、减、乘、除连带着会写。
你说说啥叫移植性?


[ 本帖最后由 BlueGuy 于 2010-8-7 12:11 编辑 ]
#9
Devil_W2010-08-07 11:50
跟你这种写这种垃圾代码的人,扯不到一块去。

你若要真想跟哥切磋。另开一帖。

不管是去OJ,还是什么题目。

哥陪你写。

哥没心情跟你扯口水。
#10
BlueGuy2010-08-07 11:55
回复 9楼 Devil_W
哥对 OJ不敢兴趣, 我很少做OJ题目。
要么这样,咱俩各出一道题,限时比试一下,
对方可以通过 "百度"...等任何方法解决问题。
如果,你没有异议的话,再往下说。

睁着眼放屁心都不虚,哥还真要见识见识你到底牛到什么程度。

[ 本帖最后由 BlueGuy 于 2010-8-7 12:00 编辑 ]
#11
Devil_W2010-08-07 12:01
限时怎么比?

如果出的题目,代码量不在同一个级别。

怎么确定时间?
#12
BlueGuy2010-08-07 12:06
哥出的题目都是小题目,代码量不超过100行,
至于,你出什么题目我不管。
我这两天不是太闲,今天晚上7点--12点,你先解决我出的题目。
明天下午2点--7点我再解决你出的题目。
你觉得怎么样,? 没有异议就这么定了。
#13
Devil_W2010-08-07 12:08
OK
#14
Devil_W2010-08-07 12:11
你什么时候出题目?
#15
BlueGuy2010-08-07 12:13
今天晚上7点,
#16
Devil_W2010-08-07 12:14
OK我会藤出时间的。
#17
ouyangouyang2010-08-07 13:28
瞧一瞧,看一看,走过路过千万不要错过
#18
lijm19892010-08-07 15:37
就知道我的票没有白投~~~~哈哈··
#19
yxwsbobo2010-08-07 17:03
2个都闲的蛋疼

算法很重要,但除非你是专门研究算法的,否则没有必要太较真,一般人写的那点东西效率和专门研究算法的人是没的比的,要不错的耐心,数学知识和观察力
#20
lintaoyn2010-08-07 18:31
我现在很少去水区,都来这儿
#21
v1_alex2010-08-07 18:43
先mark,再围观,期待高手对局,学习..............
#22
不归鹄2010-08-07 19:14
坐山观*斗
#23
LSYHEFENG2010-08-07 21:53
顶一个,坚持看高手对决
#24
sunyh19992010-08-08 09:28
版主开始吵架了,呵呵
#25
狮子。2010-08-08 11:18
有意思....凑凑热闹...........
#26
不说也罢2010-08-09 19:18
不吵不吵,有么意思哦

硬要比试的话,偶来出道题?

https://bbs.bccn.net/thread-293895-1-1.html
#27
zhoufeng19882010-08-13 00:02
2C程序员火力大逼平,谁胜谁输,孰强孰弱。
呵呵,楼主代码写得不错。
#28
zhuyuwilliam2010-09-19 20:07
哪里PK啊,我来买张票,不知道有没有错过
#29
zhuyuwilliam2010-09-19 20:10
紫禁之巅在哪里啊,我要看叶孤城与老西门的终极PK
#30
outsider_scu2010-11-13 08:06
围观世纪之战。。。
1