elyric 发表于 2011-4-26 16:23:01

小乌龟 发表于 2011-5-16 22:35:48

这个百度上有答案,目前我发现的就有两种,虽然不懂:lol

LNH_Sniper 发表于 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;
        char *s;
        int flag_num, flag_op, int_de, int_mo;
        float num = {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 / num - num / num;
        else
                result = num / num + num / num;

        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;

}

916276623 发表于 2011-6-10 11:24:25

不对呢.....

LNH_Sniper 发表于 2011-6-10 14:44:32

916276623 发表于 2011-6-10 11:24 static/image/common/back.gif
不对呢.....

我知道问题出在哪了,我会更正下,然后发布出来的。
谢谢你的测试

wangyexin 发表于 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;
}

ylo523 发表于 2013-4-6 21:59:55

无回帖,不论坛,这才是人道。

Delphi猿_宏业 发表于 2013-4-8 16:51:59

激动人心,无法言表!

evasong 发表于 2013-4-22 02:31:07

强烈支持楼主ing……

tim6501103 发表于 2013-4-22 07:30:52

楼主太厉害了,谢谢分享!

cqk2980 发表于 2013-5-16 13:33:23

无回帖,不论坛,这才是人道。

我挖 发表于 2013-7-2 21:25:34

看帖,回复支持下

fishmo 发表于 2013-7-2 23:50:48

看看老帖,支持下

Cocol 发表于 2013-7-3 19:38:27

看看,回复支持下

我挖 发表于 2013-7-4 18:57:10

再看看,回帖支持支持

Cocol 发表于 2013-7-4 20:38:17

再看看,支持下

怡静 发表于 2013-7-6 00:35:40

楼主加油,鱼C加油!我们都看好你哦!

怡静 发表于 2013-7-10 01:16:46

怡静感谢楼主分享!

怡静 发表于 2013-7-11 02:26:50

多谢楼主!

怡静 发表于 2013-7-15 00:30:02

祝鱼C论坛红红火火!
页: [1] 2
查看完整版本: 数据结构与算法:分数的加减法