鱼C论坛

 找回密码
 立即注册
查看: 7263|回复: 21

[技术交流] 数据结构与算法:分数的加减法

[复制链接]
头像被屏蔽
发表于 2011-4-26 16:23:01 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-16 22:35:48 | 显示全部楼层
这个百度上有答案,目前我发现的就有两种,虽然不懂:lol
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-19 14:34:41 | 显示全部楼层
本帖最后由 LNH_Sniper 于 2011-5-19 16:28 编辑
#include "stdio.h"
#include "string.h"
#include "math.h"


int divisor(int molecule, int denominator)
{
        int temp;
        temp = molecule;
        if( denominator % molecule == 0) 
                return molecule;
        else
        {
                while( !((denominator % temp == 0) && ( molecule % temp == 0)) )
                {
                        temp --;
                }
                return temp;
        }
}
int main()
{
        char buf[100];
        char *s;
        int flag_num, flag_op, int_de, int_mo;
        float num[4] = {0,0,0,0}, result;
        float *temp;
        temp = num;
        flag_num = 0;
        int_de = 0;
        int_mo = 0;
        gets( buf );
        s = buf;
        while( *s )
        {
                if( ( *s - 48 ) <= 9 && ( *s - 48 ) >= 0 )
                {
                         *temp = (*temp) * 10 + ( *s - 48 );        
                }
                if( *s == '/' || *s == '+' || *s == '-')
                {
                        if(*s == '+')
                                flag_op = 1;
                        if(*s == '-')
                                flag_op = 0;
                        temp++;
                }
                s++;
        }
        if(flag_op == 0)
                result = num[0] / num[1] - num[2] / num[3];
        else
                result = num[0] / num[1] + num[2] / num[3];

        if(result > 0)
                flag_op = 1;
        if(result < 0)
                flag_op = 0;
        if(result == 0)
                flag_op = -1;
        while( result != (int)result )
        {
                result = result * 10;
                flag_num++;
        }
        int_de = (int)pow(10,flag_num);
        if(flag_op == 1)
                printf("%d/%d", (int)result / divisor((int)result,int_de),int_de / divisor((int)result,int_de));
        if(flag_op == 0)
                printf("-%d/%d", (int)result / divisor((int)result,int_de),abs((int)int_de / divisor((int)result,int_de)));
        if(flag_op == -1)
                printf("%d",0);
        printf("\n");
        return 0;

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-10 11:24:25 | 显示全部楼层
不对呢.....
QQ截图20110610112415.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-10 14:44:32 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-21 18:11:50 | 显示全部楼层
本帖最后由 wangyexin 于 2011-6-21 18:21 编辑
#include<iostream>
using namespace std;
int gcd(int n,int m)
{
    while(n!=m)
    {
        while(n>m)n-=m;
        while(n<m)m-=n;  
    }
    return n;
}
int main()
{
    int a,b,c,d,k,res,flag;
    char ch,o;   
    while(scanf("%d%c%d%c%d%c%d",&a,&ch,&b,&o,&c,&ch,&d)!=EOF)
    {                           
         flag=0;
         if(o=='+')
         {
             res=a*d+c*b;          
         }
         else
         {
             res=a*d-c*b;    
         } 
         if(res==0)
         {
            cout<<0<<endl;
         }
         else
         {
             if(res<0)
             {
                 res=-res;
                 flag=1;         
             }
             if(flag)printf("-");
             k=gcd(b*d,res);
             printf("%d/%d",res/k,b*d/k);
         }
    }
    system("pause");
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-6 21:59:55 | 显示全部楼层
无回帖,不论坛,这才是人道。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-8 16:51:59 | 显示全部楼层
激动人心,无法言表!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-22 02:31:07 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-22 07:30:52 | 显示全部楼层
楼主太厉害了,谢谢分享!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-16 13:33:23 | 显示全部楼层
无回帖,不论坛,这才是人道。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-7-2 21:25:34 | 显示全部楼层
看帖,回复支持下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-2 23:50:48 | 显示全部楼层
看看老帖,支持下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-3 19:38:27 | 显示全部楼层
看看,回复支持下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-4 18:57:10 | 显示全部楼层
再看看,回帖支持支持
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-4 20:38:17 | 显示全部楼层
再看看,支持下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-6 00:35:40 | 显示全部楼层
楼主加油,鱼C加油!我们都看好你哦!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-10 01:16:46 | 显示全部楼层
怡静感谢楼主分享!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-11 02:26:50 | 显示全部楼层
多谢楼主!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-15 00:30:02 | 显示全部楼层
祝鱼C论坛红红火火!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 00:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表