| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2815 人关注过本帖
标题:新官上任三把火啊!一任版主即删哥的帖子
取消只看楼主 加入收藏
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
结帖率:94.72%
收藏
已结贴  问题点数:20 回复次数:7 
新官上任三把火啊!一任版主即删哥的帖子
以下您所发表的主题被 Devil_W 执行 删除 操作。

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

操作理由: 一堆烂code



[ 本帖最后由 BlueGuy 于 2010-8-7 10:23 编辑 ]
搜索更多相关主题的帖子: 版主 帖子 
2010-08-07 10:22
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
#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;
}

我就是真命天子,顺我者生,逆我者死!
2010-08-07 10:25
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
如果您对本管理操作有异议,请与我取得联系。
//出来给个解释, 到底烂在哪里?

我就是真命天子,顺我者生,逆我者死!
2010-08-07 10:26
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
从中可以看出备份有多重要了。提醒大家, 写代码要多备份,
一旦发生意外,你可能就回不到从前了。

我就是真命天子,顺我者生,逆我者死!
2010-08-07 11:29
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
你那个啥 BigInt 根本都惨不忍睹, 另外我写代码从不参考垃圾代码.
哥这份代码本不是写给你的,只是拿你的名号换取点击率。
你这个白痴, 你管哥实现了几个操作符,哥写了乘法,自然 加、减、乘、除连带着会写。
你说说啥叫移植性?


[ 本帖最后由 BlueGuy 于 2010-8-7 12:11 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2010-08-07 11:46
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 9楼 Devil_W
哥对 OJ不敢兴趣, 我很少做OJ题目。
要么这样,咱俩各出一道题,限时比试一下,
对方可以通过 "百度"...等任何方法解决问题。
如果,你没有异议的话,再往下说。

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

[ 本帖最后由 BlueGuy 于 2010-8-7 12:00 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2010-08-07 11:55
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
哥出的题目都是小题目,代码量不超过100行,
至于,你出什么题目我不管。
我这两天不是太闲,今天晚上7点--12点,你先解决我出的题目。
明天下午2点--7点我再解决你出的题目。
你觉得怎么样,? 没有异议就这么定了。

我就是真命天子,顺我者生,逆我者死!
2010-08-07 12:06
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
今天晚上7点,

我就是真命天子,顺我者生,逆我者死!
2010-08-07 12:13
快速回复:新官上任三把火啊!一任版主即删哥的帖子
数据加载中...
 
   



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

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